xuanhuanzi 发表于 2024-3-30 13:19

如何定义一个指向自己的指针?

比如说链表啊,指向的每一个类型都是自己这种类型,又包含指针,那么是怎么实现的呢?

xuanhuanzi 发表于 2024-3-30 13:26

经过研究原来是可以定义一个结构体的,结构体里面本身还可以包含自身类型的指针,真是好神奇。
#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;
}

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

链表确实很好,可以降低使用的内存吧

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

这不是链表的用法吗,单向链表。
页: [1]
查看完整版本: 如何定义一个指向自己的指针?