❤️坚持是一种品质❤️
作者:每天都要记得刷题(●’◡’●)
时间:2022/03/31
本篇绪论:本篇博客将介绍带头单向不循环链表的插入
本篇感悟:本篇涉及很多单链表的操作,算是实操一遍插入操作吧。
文章目录
题目介绍
本题用数组也可以做,但是我认为用单链表可以实战一下,巩固巩固单链表的基本操作。
拆解思路
//定义结构体结点(顺便起typedef别名)
// while()判断程序结束条件
// while()由n(个数)创建单链表
//遍历单链表寻找位置
//经典插入操作
//循环次数未知
具体代码
备注:详解在代码块中
#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<stdlib.h>//定义结构体结点(顺便起typedef别名)typedefstructnode{int date;structnode* next;}Node;intmain(){int m, n;//定义一个结构结点
Node* head,* end,* p,* q,* r;//q用来创建结点,其数据域存放着要插入的数据mscanf("%d%d",&m,&n);//n个数(结点),m是要插入的整型数据(date)// while()判断程序结束条件while(m !=0|| n !=0)//m和n同时为0表示程序结束,||相当于并联电路,只有两个都断开才能终结{//创建头结点
head =(Node*)malloc(sizeof(Node));
head->next =NULL;//创建单链表
end = head;for(int i =1; i <= n; i++){
p =(Node*)malloc(sizeof(Node));scanf("%d",&p->date);//感悟:单向链表的很多操作都是要两个指针一起,野辅联动。
end->next = p;
end = p;}
end->next =NULL;//比数据域内容大小找插入位置//要一个指针才能找到那个位置,但是要俩个指针才能完成插入操作
p = head->next;//循环次数未知用whilewhile(p->date < m){
r = p;
p = p->next;}//创建带插入的结点
q =(Node*)malloc(sizeof(Node));
q->date = m;//经典插入操作
q->next = r->next;
r->next = q;
p = head->next;//打印for(int i =1; i <= n; i++){printf("%d", p->date);
p = p->next;}printf("%d", p->date);//这个容易漏掉scanf("%d%d",&m,&n);
}return0;}
模块化代码
1.创建单链表
2.定位到要插入的位置
❤️关注我一起成长❤️
版权归原作者 每天都要坚持刷题 所有, 如有侵权,请联系我们删除。