每日一题之带头单链表的插入

每日一题之带头单链表的插入,第1张

          ❤️坚持是一种品质❤️

作者:每天都要记得刷题(●’◡’●)
时间:2022/03/31
本篇绪论:本篇博客将介绍带头单向不循环链表的插入
本篇感悟:本篇涉及很多单链表的 *** 作,算是实 *** 一遍插入 *** 作吧。



文章目录
  • 题目介绍
  • 拆解思路
  • 具体代码
  • 模块化代码

题目介绍

本题用数组也可以做,但是我认为用单链表可以实战一下,巩固巩固单链表的基本 *** 作。



拆解思路

//定义结构体结点(顺便起typedef别名)
// while()判断程序结束条件
// while()由n(个数)创建单链表
//遍历单链表寻找位置
//经典插入 *** 作
//循环次数未知

具体代码

备注:详解在代码块中

#define _CRT_SECURE_NO_WARNINGS 1
#include
#include

//定义结构体结点(顺便起typedef别名)
typedef struct node {
	int date;
	struct node* next;
}Node;
int main()
{
	int m, n;
	//定义一个结构结点
	Node* head, * end, * p, * q, * r;//q用来创建结点,其数据域存放着要插入的数据m
	scanf("%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; //循环次数未知用while while (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)} return 0; }

模块化代码

1.创建单链表

2.定位到要插入的位置

           ❤️关注我一起成长❤️ 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/562583.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-02
下一篇 2022-04-02

发表评论

登录后才能评论

评论列表(0条)

保存