通过结构体指针来实现自引用
时间: 2024-09-08 09:01:35 浏览: 37
在C语言中,结构体是一种复合数据类型,可以包含多个不同的数据成员。自引用结构体是指结构体中包含一个指向自身类型的指针,这种结构体可以用来创建链表、树和其他复杂的数据结构。
以下是一个简单的例子来说明如何通过结构体指针实现自引用:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义一个自引用的结构体,其中包含数据和指向同一类型的指针
typedef struct Node {
int data;
struct Node* next;
} Node;
int main() {
// 创建一个Node类型的指针并指向一个Node结构体实例
Node* head = (Node*)malloc(sizeof(Node)); // 分配内存
if (head == NULL) {
exit(-1); // 如果内存分配失败,则退出程序
}
head->data = 1; // 初始化数据成员
head->next = NULL; // 初始化指针成员
// 创建另一个Node实例并连接到head
Node* second = (Node*)malloc(sizeof(Node));
if (second == NULL) {
exit(-1);
}
second->data = 2;
head->next = second; // 通过自引用指针连接
// 打印链表内容
Node* current = head;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
// 释放分配的内存
free(head);
free(second);
return 0;
}
```
在这个例子中,我们定义了一个名为`Node`的结构体,它包含一个整型成员`data`和一个指向`Node`类型的指针`next`。这样,每个`Node`实例都可以指向另一个`Node`实例,形成一个链表。
阅读全文