链表是由一系列的节点组成
首先定义链表节点定义类型,包含两个域,一个数据域一个结构域
struct LinkNode
{
int date;
struct LinkNode* next;
};
每一个链表都是由这样的struct Linknode 组成,用struct Linknode*去把每个节点 的指针域串联起来就是链表
接下来创建节点 ,节点的类型还是struct LInkNode
如何串联起来这个链表,让node指向第二个元素的地址,第二个指向第三个以此类推
到了next5.next的时候我们没有继续往下了链表里node6的指针域还是空指针就不会继续往下了
请注意这里为什么不写成node->next因为我们的类型是struct LinkNode 类型不是struct LinkNode*
所以不能写成这种形式
struct LinkNode node1 ={ 10,NULL };
struct LinkNode node2 = { 20,NULL };
struct LinkNode node3 = { 30,NULL };
struct LinkNode node4 = { 40,NULL };
struct LinkNode node5 = { 50,NULL };
struct LinkNode node6 = { 60,NULL };
node1.next = &node2;
node2.next = &node3;
node3.next = &node4;
node4.next = &node5;
node5.next = &node6;
如何遍历链表
首先我们要知道我们在链表在内存中是如何存储的
我们只需要定义一个辅助指针变量也可以叫头指针指向第一个节点,知道;了第一个节点就可以知道整个链表
接下来代码就这样写
首先确定指针类型因为我们要指向节点所有指针的类型就是struct linknode*
紧接着进入循化当我们指向的位置不等于空指针时进入循环,进入循环后先打印当前指向的位置的元素,然后再让直接指向下一个元素当最后指向的元素时空指针时那么循环也就停止了。
struct LinkNode *p=&node1;
while (pcurrent!=NULL)
{
printf("%d ", p->date);
//指针移动到下一个元素的首元素地址
pcurrent = p->next;
}
欢迎给我大佬补充