递归创建链表,递归冒泡排序链表

#include<iostream> 
using namespace std;
struct node{
	int data;
	node *next;
};
node *create(node *p);
void buble(node *head,node *end);
void show(node *head);
int main(){
	cout<<"please enter the number,while cin>>0,end;"<<endl;
	node *head=0,*end=0;
	head=create(head);
	buble(head,end);
	cout<<"Now the new Listnode is:"<<endl;
	show(head);
	return 0;
}
node *create(node *p){
	int num;
	cin>>num;
	if(num==0)return 0;
	p=new node;
	p->data=num;
	p->next=create(p);
	return p;
}
void buble(node *p,node *end){
	node *q,*head;
	head=p;
	int x;
	if(p==end)return ;
	while(p->next!=0&&p->next!=end){
		q=p->next;
		if(p->data>q->data){
			x=p->data;
			p->data=q->data;
			q->data=x;
		}
		p=p->next;
	}
	end=p;
	buble(head,end);
}
void show(node *head){
	while(head){
		cout<<head->data<<" ";
		head=head->next;
	}
}

用递归实现对链表的排序,其思想是用一个end指针来表示链表的结束点,当第一次冒泡排序后就将最后一个节点的指针赋给end,然后递归调用排序,当p->nextend的时候表示这一次排序结束,一直递归,直到endhead。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值