链表的 创建 打印 删除 排序 拆分

博客主要围绕链表的创建展开,介绍了静态链表和动态链表。指出链表结构对新手较难理解,但画图弄懂结构后操作会变简单。静态链表简单,用得少;动态链表使用多,可自由扩展,创建较难,还总结了创建动态链表的经验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

废话不多说系列1
最近浪浪才学完链表,相信好多人应该和我一样,面对链表的相关操作也是头疼的很。对于链表环环相扣的结构开始对新手来说确实是不太好理解,更不用说自己对链表进行其他的一系列操作了。但是如果你能够通过画图把链表的结构给弄懂了,那么其实你会发现操作链表就像是操作数组的元素样简单。
进入正题:

The First:链表的创建;

废话不多说系列2:链表的创建是基础,删除,查找,排序,拆分都得先有个链在这把(说好的废话不多说,那就酱叭!)
链表的创建主要有静态链表还有动态链表(其实还有双向链表,但是本浪还没有深入学习,所以需要你的关注,待后更新,5555)

一.静态链表

废话不多说系列3:静态链用的比较少,而且比较简单(不是来拉仇恨的2333),就是简单的接链,所以直接上干货。。。。

#include<iostream>
using namespace std;
typedef struct Student{
	string name;
	int score;
	struct Student* next;
}Stu;
void print(Stu* head){
	Stu* i=head;
	while(i!=NULL){
		cout<<i->name<<"\t"<<i->score<<endl;
		i=i->next;
	}
}
int main(){
	Stu*head;
	Stu stu[3];//这里我们只是为了演示接链的过程
	//所以数据创建的比较简单
	for(int i=0;i<3;++i){
		cin>>stu[i].name >>stu[i].score;
	} 
	//下面的过程就是机械地接链过程了 
	head=&stu[0];
	stu[0].next =&stu[1];
	stu[1].next =&stu[2];//把上面地声明换成指针,这里换成箭头来进行输入也是可以的
	stu[2].next=NULL;
	print(head);
	return 0; 
}

运行结果如图
*

二.动态链表

废话不多说系列4:动态链表我们用的比较多,本浪认为主要是动态链表能够根据我们地需要进行自由地扩展,更加符合我们生活中的情况,但是这个链表地创建对于初学者来说可能是比较困难的,当时本浪在学习的时候也是花了好一番功夫呢。但是既然是废话不多说,所以在这里还是要总结一下自己的学习经验,好然更多的同学能很轻松的建立一个动态链表。那么学习经验就是:慢慢的都是套路
******套路总结如下:******指针要三个
一个头,一个探索指针,一个尾随指针
首个数据不空头指向它,首个数据为空head=NULL;
探索指针malloc一个读入一个,p2在判断p1不空的时候紧跟上;
最终别忘了指向NULL;
**说这么多,重要的就总结一句话:**需要三个指针…
下面的代码只是给出函数题,其他的枝枝叶叶就由读者自己补齐把

Stu* creat(){
	Stu*head;
	Stu*p1,*p2;
	p1=(Stu*)malloc(LEN);
	scanf("%s %d",p1->name,&p1->score);//这里不要使用cin,亲测会出现毛病
	//曾经有位大佬知道小弟说cin输入流本身就有很多毛病,所以在涉及到
	//字符串输入时笔者喜欢用scanf 
	int n=1;//这里的n是用来判断是不是第一次输入数据
	//如果是第一次输入数据的话就让头指针指向它 
	while(p1->score!=0){
		if(n==1){//看到没n的作用显现了
		 head=p1; 
		 n++;//从此以后n再无用 
		}else{
			p2->next=p1;
		}
		p2=p1;//p2跟进p1的步伐
		p1=(Stu*)malloc(LEN);
		scanf("%s %d",p1->name,&p1->score);//这里的重复申请主要是为了呼应while的循环判断 
	}
	p2->next=NULL;
	return head; 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值