☺链表

目录

 

写在最前面,欢迎各位大佬批评指正。

//利用原来的单链表中节点空间设计出三个单链表的算法

※单链表实现简单选择排序算法


写在最前面,欢迎各位大佬批评指正。


//利用原来的单链表中节点空间设计出三个单链表的算法

ps:当时没有实际跑,电脑过了一遍之后发现在处理每个链表的最后部分元素的时候会出现问题,自己的代码留着思考处理方法,最后放一个大佬利用链表插入做的方法

//单链表中仅有三类字符的数据元素(大写字幕,数字和其他字符),
//利用原来的单链表中节点空间设计出三个单链表的算法
typedef char datatype;//其他字符
typedef struct LNode{
	datatype data;
	struct LNode *next;
}LNode,*LinkList;

void divide_to_3(Linklist L,Linklist &ha,Linklist &hb,Linklist &hc){
	LinkList p;
	p=L;
	p=p->next;
	Linklist q,r,i;
	ha=q;
	hb=r;
	hc=i;

	while(p){
		if (p->data>='A' && p->data<='Z') {
			q->next=p;
			q=p;
	
			
		}else if (p->data>='0' && p->data<='9') {
			r->next=p;
			r=p;
	
		} else {
			i->next=p;
			i=p;
		}
		p=p->next;
	}
} 

※单链表实现简单选择排序算法

//这种方法是完全应用了简单选择排序的过程,复杂的地方在与她需要三个指针来进行移动。

//链式存储结构下的简单选择排序
typedef struct LNode{
	int data;
	struct LNode* next;
}LNode,*LinkList;

void Simple_Select_Sort1(LinkList &L){
//每次从链表中选出一个最小值,设置一个节点每趟往后移动一个单位,将最小值和它的值交换。
	LinkList p,q,s;
	int min;
	if(L==NULL&||L->next==NULL)
			return;
	for(q=L;q;q=q->next){
		min=q->data;
		s=q;
		for(p=q->next;p;p=p->next){
			if(min>p->data){
				
				min=p->data;
				
				s=p;//s保存了当前最小值的节点 
			}
			if(s!=q){
			
			s->data=q->data;
			q->data=min;
			}
		}
	}
	
} 

//我们不在等到最小值交换,只要有比哨兵小的就交换

void SimpleSelectSort2(LinkList &L){
//每次从链表中选出一个最小值,设置一个节点每趟往后移动一个单位,将最小值和它的值交换。
	int temp;
	LinkList p,r;
	p=L->next;
	r=L->next;
	temp=p->data;
	for(;r;r->next){
		while(p){
			if(p->data<temp){
				r->data=p->data;
				r->data=temp;
			}
			p=p->next;
		}
		p=r;
	} 
} 

 

 

 

 

 

 

 

 

 

 

 


 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值