假设我们的链表有一个链表头。链表头在位置0处。
1.申明节点结构
typedef struct Link
{
int elem; //存储整形元素
struct Link *next; //指向直接后继元素的指针
}link;
2.创建链表的函数
link * initLink()
{
link *p; // 头指针(指向结构体的指针)
link * temp=(link*)malloc(sizeof(link)); //创建一个头结点
p = temp; //头指针指向头结点,以后这个指针就代表链表,返回链表就是返回这个链表的头指针
for (int i=1; i<5; i++) //创建5个节点并初始化为1,2,3,4,5
{
link *station=(link*)malloc(sizeof(link));
station->elem=i;
station->next=NULL; //最后一个节点指向空
temp->next=station; //建立新节点与头节点的逻辑关系
temp=station; //该节点又类似于下一个节点的头结点
}
return p;
}
3.测试一个链表是否是空表
int IsList(link *p)
{
link *temp = p;
return temp -> next == NULL;
}
4.链表插入元素
//p为原链表,elem表示新数据元素,add表示新元素要插入的位置
link *