如何定义一个指向自己的指针?
比如说链表啊,指向的每一个类型都是自己这种类型,又包含指针,那么是怎么实现的呢?经过研究原来是可以定义一个结构体的,结构体里面本身还可以包含自身类型的指针,真是好神奇。
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点
struct Node {
int data;
struct Node *next;
};
// 插入节点到链表头部
void insertAtBeginning(struct Node **head, int data) {
// 创建新节点
struct Node *newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = data;
// 将新节点插入到链表头部
newNode->next = *head;
*head = newNode;
}
// 打印链表
void printList(struct Node *head) {
struct Node *temp = head;
while (temp != NULL) {
printf("%d -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
}
int main() {
// 初始化链表头指针
struct Node *head = NULL;
// 插入一些元素到链表中
insertAtBeginning(&head, 5);
insertAtBeginning(&head, 10);
insertAtBeginning(&head, 15);
// 打印链表
printf("链表内容:\n");
printList(head);
return 0;
}
链表内容:
15 -> 10 -> 5 -> NULL 在C或C++中,可以定义一个指向自己的指针,也称为自引用指针 指针还是比较好用的 尽量别让指针指空,或者变成野指针就好 指针我用的还是少,一般数组用的比较多 感觉指针用不好的话,会很容易出问题的 一般指向自己的指针意义是什么呢? 链表确实很好,可以降低使用的内存吧 正常来说,定义了一个结构体或类,其中包含一个指向自己类型的指针成员。这样就可以创建一个自引用的数据结构,比如链表或树等 自引用指针非常适合用于定义递归数据结构,如链表、树等。通过指向自己的指针,可以轻松地构建具有递归性质的数据结构,使得数据结构的定义和操作更加灵活和简洁 在动态数据结构中,自引用指针可以方便地实现动态内存分配和释放,以及动态数据结构的扩展和收缩。这对于需要频繁插入、删除或调整大小的数据结构非常有用 指针用自己函数的名字即可。 把自己的地址赋值给一个指针变量。 这样可以组成链表了。 这不是链表的用法吗,单向链表。
页:
[1]