[PIC®/AVR®/dsPIC®产品] 如何定义一个指向自己的指针?

[复制链接]
1965|17
 楼主| xuanhuanzi 发表于 2024-3-30 13:19 | 显示全部楼层 |阅读模式
比如说链表啊,指向的每一个类型都是自己这种类型,又包含指针,那么是怎么实现的呢?
 楼主| xuanhuanzi 发表于 2024-3-30 13:26 | 显示全部楼层
经过研究原来是可以定义一个结构体的,结构体里面本身还可以包含自身类型的指针,真是好神奇。
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. // 定义链表节点
  4. struct Node {
  5.     int data;
  6.     struct Node *next;
  7. };

  8. // 插入节点到链表头部
  9. void insertAtBeginning(struct Node **head, int data) {
  10.     // 创建新节点
  11.     struct Node *newNode = (struct Node*)malloc(sizeof(struct Node));
  12.     newNode->data = data;
  13.     // 将新节点插入到链表头部
  14.     newNode->next = *head;
  15.     *head = newNode;
  16. }

  17. // 打印链表
  18. void printList(struct Node *head) {
  19.     struct Node *temp = head;
  20.     while (temp != NULL) {
  21.         printf("%d -> ", temp->data);
  22.         temp = temp->next;
  23.     }
  24.     printf("NULL\n");
  25. }

  26. int main() {
  27.     // 初始化链表头指针
  28.     struct Node *head = NULL;

  29.     // 插入一些元素到链表中
  30.     insertAtBeginning(&head, 5);
  31.     insertAtBeginning(&head, 10);
  32.     insertAtBeginning(&head, 15);

  33.     // 打印链表
  34.     printf("链表内容:\n");
  35.     printList(head);

  36.     return 0;
  37. }
 楼主| xuanhuanzi 发表于 2024-3-30 13:28 | 显示全部楼层
链表内容:
15 -> 10 -> 5 -> NULL
g0d5xs 发表于 2024-4-2 16:53 | 显示全部楼层
在C或C++中,可以定义一个指向自己的指针,也称为自引用指针
b5z1giu 发表于 2024-4-2 18:00 | 显示全部楼层
指针还是比较好用的
ex7s4 发表于 2024-4-2 19:06 | 显示全部楼层
尽量别让指针指空,或者变成野指针就好
y1n9an 发表于 2024-4-2 20:10 | 显示全部楼层
指针我用的还是少,一般数组用的比较多
p0gon9y 发表于 2024-4-2 21:13 | 显示全部楼层
感觉指针用不好的话,会很容易出问题的
q1d0mnx 发表于 2024-4-2 22:16 | 显示全部楼层
一般指向自己的指针意义是什么呢?
kaif2n9j 发表于 2024-4-3 07:03 | 显示全部楼层
链表确实很好,可以降低使用的内存吧

评论

按需使用内存  发表于 2024-4-17 09:50
w2nme1ai7 发表于 2024-4-3 09:00 | 显示全部楼层
正常来说,定义了一个结构体或类,其中包含一个指向自己类型的指针成员。这样就可以创建一个自引用的数据结构,比如链表或树等
liu96jp 发表于 2024-4-3 10:10 | 显示全部楼层
自引用指针非常适合用于定义递归数据结构,如链表、树等。通过指向自己的指针,可以轻松地构建具有递归性质的数据结构,使得数据结构的定义和操作更加灵活和简洁
cen9ce 发表于 2024-4-3 11:07 | 显示全部楼层
在动态数据结构中,自引用指针可以方便地实现动态内存分配和释放,以及动态数据结构的扩展和收缩。这对于需要频繁插入、删除或调整大小的数据结构非常有用
稳稳の幸福 发表于 2024-4-15 22:44 | 显示全部楼层
指针用自己函数的名字即可。
huquanz711 发表于 2024-4-16 07:47 来自手机 | 显示全部楼层
把自己的地址赋值给一个指针变量。
稳稳の幸福 发表于 2024-4-23 23:22 | 显示全部楼层
这样可以组成链表了。
幸福小强 发表于 2024-4-26 22:17 | 显示全部楼层
这不是链表的用法吗,单向链表。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

183

主题

2331

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部