目录
前言
一起学习链表的动态创建,掌握链表的应用。
提示:以下是本篇文章正文内容,下面案例可供参考
一、头插法
1.创建链表结构
struct Test{
int date;//数据域
struct Test *next;//指针域
};
2.获取链表数据
struct Test *createLink(struct Test *head)
{
struct Test *new;
while(1){
new = (struct Test*)malloc(sizeof(struct Test));//开辟空间
printf("Please input Link dates\n");
scanf("%d",&(new->date));
if(new->date == 0){//键盘输入0时返回链表头,输入结束
printf("Input breaks!\n");
free(new);
return head;
}
head = addLinkbefore(head,new);//调用函数,把头结点和新结点传参给函数addLinkbefore();
}
}
3.头插法
struct Test *addLinkbefore(struct Test *head,struct Test *new)
{
if(head==NULL){//判断链表头是否为空
head = new;//让新结点作为头结点
}else{
new->next = head;//新结点在头结点之前插入
head = new;//让新结点作为头结点
}
return head;
}
4.遍历链表
void printLink(struct Test *head)
{
struct Test *p = head;
while(p){
printf("%d ",p->date);
p = p->next;
}
printf("\n");
}
二、尾插法
1.获取链表数据
struct Test *createLink(struct Test *head)
{
struct Test *new;
while(1){
new = (struct Test*)malloc(sizeof(struct Test));//开辟空间
printf("Please input Link dates\n");
scanf("%d",&(new->date));
if(new->date == 0){//键盘输入0时返回链表头,输入结束
printf("Input breaks!\n");
free(new);
return head;
}
head = addLinkbehind(head,new);//调用函数,把头结点和新结点传参给函数addLinkbehind();
}
}
2.尾插法
struct Test *addLinkbehind(struct Test *head,struct Test *new)
{
struct Test *p = head;
if(p == NULL){
head = new;
return head;
}
while(p->next != NULL){
p = p->next;
}
p->next = new;
return head;
}
总结
理清链表头插法和后插法的主要逻辑结构,实现起来并不困难,把小的基础知识掌握好之后,理解能力也就上来了,多练多思考才时掌握知识点的重点,一起加油!