C语言 创建一个简单的链表
/*
->首先编写头文件MyListDemo.h,我们定义了一个链表的结构体
->里面简单封装了链表自身的属性(存放的数据,指向下一个链表的指针)
*/
#include <stdio.h>
#include <malloc.h>
typedef struct MyList
{
int m_num; //链表中需要存放的数据
MyList* m_next; //指向链表
}MyList;
//定义了两个功能函数
MyList** AddNode(MyList** myList, int data);
//MyList* MyListInsert2(MyList* myList, int data);
void Show(MyList* head);
完成上一步后,在c文件中,我们开始进行功能函数的编写。
#include "MyListDemo.h"
int main()
{
//定义一个链表变量,作为链表头的,因为后面若遍历到表尾需要根据这位置遍历回表头
MyList* head = NULL;
//再定义一个二级指针链表变量,用来更新保存改动后新的链表节点位置
MyList** move = &head;
for (int i = 0; i < 10; i++)
{
move = AddNode(move, i);
}
Show(head);
}
//增添一个节点
MyList** AddNode(MyList** myList2, int data)
{
(*myList2) = (MyList*)malloc(sizeof(MyList));//为当前节点申请空间
(*myList2)->m_num = data;//数据赋值
(*myList2)->m_next = NULL;//若后续不继续申请空间,此处为结尾
//关键是理解这步,从当前节点移动到下个节点,那么后续的"当前结点"就是结点next了
return &(*myList2)->m_next;
}
//展示数据
void Show(MyList* head)
{
//当前不为空的话,就一直向后遍历数据
while (head != NULL)
{
printf("num:%d\r\n", head->m_num);
//移动到下一个结点
head = head->m_next;
}
}
最后验证功能,遍历成功