链表之前我们已经介绍过,这章笔记我们就来通过C语言实现一个简单的链表
C语言表示链表的一个节点
struct Node
{
int data;
struct Node*link;
}
上图:
头节点
首先链表有一个头节点,他没有数据,类型是节点指针 他负责标识这个链表,比如我现在这个头节点叫head ,如果head = NULL表示链表为空 如果head不为空则表示链表有节点。
创建节点
假设head = NULL,我们现在要创建一个节点,首先应该为节点分配内存,你可以选择C++/C的方式,我这里选择C,因为是C语言文章。
通过malloc给节点在堆上分配内存
Node*temp = malloc(sizeof(Node));
然后通过头节点指向这个节点
head = temp;
这样我们就创建了一个有节点的链表 我们想在已有的节点后面再创建一个节点该如何创建呢?
首先要创建这个新的节点,然后把上一个节点的指针指向下一个节点的地址
Node*temp1 = malloc(sizeof(Node));
因为之前我们已经创建过了前一个节点 现在我们需要修改前一个节点的链接指向下一个节点
temp->link = temp1;
temp1->data = 4;
temp1->link = NULL;
还有另一种写法
(*temp).link = temp1;
(*temp1).data = 4;
(*temp1).link = NULL;
遍历节点
首先我们要创建一个节点指针指向头节点,从头节点开始遍历,通过判断节点的指针域是否为0,来辨析是否到达最后一个节点
Node*temp = A;
while(temp->link!=NULL)
{
temp = temp->link;
}
printf(“the last data of Node is %d”,temp->data);
很简单的逻辑
头节点是不可以被修改的,因为头结点是链表的标识,如果修改掉链表标识,链表将无法成立
网站标题:CV鼻祖洋芋
原创文章,作者:locus,如若转载,请注明出处:https://blog.cvpotato.cn/forward-code/c-2/133/
本博客所发布的内容,部分为原创文章,转载注明来源,网络转载文章如有侵权请联系站长!