数码在线
白蓝主题五 · 清爽阅读
首页  > 演示制作

用指针实现链表节点:代码演示与理解

指针实现链表节点:代码演示与理解

在写一个小型通讯录程序时,发现数据量一多,数组就显得笨重。插入一个人得挪一堆数据,删一个还得补空位,挺麻烦。后来改用链表,灵活多了。核心就是——用指针实现链表节点。

链表不像数组那样连续存放,每个节点自己带地址信息,像一节节火车车厢,靠指针连起来。想加车?找个空位接上就行;想拆?断开指针,重新连一下前后节点就完事。

定义一个节点结构

在 C 语言里,节点通常用结构体表示。里面除了数据,还得有个指向同类结构体的指针。

struct Node {
    int data;                    // 存数据,比如联系人的编号
    struct Node* next;          // 指向下一个节点的指针
};

这里的 next 就是关键。它不存具体值,而是存下一个节点的“门牌号”,也就是内存地址。

创建并连接节点

先用 malloc 动态分配内存,搞出一个节点。

struct Node* head = (struct Node*)malloc(sizeof(struct Node));
head->data = 1001;
head->next = NULL;  // 刚开始只有一个,后面没节点

再加一个节点:

struct Node* second = (struct Node*)malloc(sizeof(struct Node));
second->data = 1002;
second->next = NULL;

// 把第一个节点的 next 指向第二个
head->next = second;

这时候,head 能找到自己,也能通过 next 找到 second。整个链就连起来了。

遍历链表就像顺着绳子找珠子

从头开始,一个个顺着指针走:

struct Node* current = head;
while (current != NULL) {
    printf("联系人编号: %d\n", current->data);
    current = current->next;  // 移动到下一个节点
}

每走一步,current 更新成下一个地址,直到 nextNULL,说明到末尾了。

这种结构在做动态数据管理时特别实用。比如演示程序里要实时添加图表数据点,用链表比频繁realloc数组省心得多。

指针看着吓人,但把它当成“下一站导航”来理解,其实挺直观。只要记住每个节点都自带“下一个在哪”的信息,整条链就能跑起来。