📜  C |结构与联合|问题7(1)

📅  最后修改于: 2023-12-03 14:59:38.727000             🧑  作者: Mango

C | 结构与联合 | 问题7

在C语言中,结构和联合是两个重要的数据类型,它们允许程序员定义自己的复杂数据结构。本篇介绍主题是关于结构和联合的问题7,下面将详细讨论这个问题。

问题描述

问题7:如何在结构体中使用指向自身类型的指针?

解答

在结构体中使用指向自身类型的指针,可以创建包含指向同一类型结构体的指针成员。这种技巧通常称为链表(Linked List)。

以下是一个简单的示例代码:

#include <stdio.h>

// 定义结构体
typedef struct Node {
    int data;           // 数据成员
    struct Node* next;  // 指针成员,指向同一类型的结构体
} Node;

int main() {
    // 创建结构体变量
    Node node1, node2, node3;

    // 设置数据成员
    node1.data = 1;
    node2.data = 2;
    node3.data = 3;

    // 设置指针成员,构建链表
    node1.next = &node2;
    node2.next = &node3;
    node3.next = NULL;  // 结束链表

    // 遍历链表并打印数据
    Node* current = &node1;
    while (current != NULL) {
        printf("%d ", current->data);
        current = current->next;
    }

    return 0;
}

以上代码演示了如何在结构体中使用指向自身类型的指针来构建链表。我们首先定义了一个结构体 Node,其中包含一个整数数据成员 data 和一个指向 Node 类型的指针成员 next

main() 函数中,我们创建了三个结构体变量 node1node2node3。然后,我们设置它们的数据成员和指针成员,构建了一个简单的链表。

接下来,我们使用一个指针 current 来遍历链表并打印每个节点的数据。当 current 指向 NULL 时,表示已经到达链表的末尾,遍历结束。

输出结果为:

1 2 3

通过这个示例,你可以了解到如何在结构体中使用指向自身类型的指针,以及如何利用链表来存储和遍历数据。

希望本篇对你有所帮助!如果你还有其他关于结构和联合的问题,可以继续提问。