试以单链表为存储结构,实现简单选择排序算法。

(1)试以单链表为存储结构,实现简单选择排序算法。

#include <stdio.h>
#include <stdlib.h>

typedef int status;
typedef int elemtype;

typedef struct lnode{
	elemtype data;
	struct lnode *link;
}lnode,*linknode;

typedef struct{
	linknode head,rear;
	int len;}linklist;
		
void init_linklist(linklist &l)
{l.head=l.rear=(linknode)malloc(sizeof(lnode));
 l.len=0;
 l.head->link=NULL;}
 
 void create(linklist &l)
{linknode p;elemtype e;
 init_linklist(l);
 scanf("%d",&e);
 while(e!=-9999)
 {p=(linknode)malloc(sizeof(lnode));
  p->data=e;p->link=l.head->link;
  l.head->link=p;
  if(l.head==l.rear)l.rear=p;
  l.len++;
  scanf("%d",&e);}
}

void putdata(linklist l)
{linknode p=l.head->link;
 printf("\n");
 while(p)
	{printf("%d,",p->data);p=p->link;}
}

void sort(linklist &l){
	int i=0; 
	linknode p,q,ins,min,temp;
	ins=l.head;
	while(ins->link){
		p=ins->link;
		min=p;
		while(p){
			if(min->data>p->data){temp=q;min=p;i=1;}
			q=p;
			p=p->link;
		}
		if(i==1){
			i=0;
			temp->link=min->link;
			min->link=ins->link;
			ins->link=min;
		}
		ins=min;
	}
}

int main(){
	linklist L;
	printf("请输入待排序的数字,以-9999结束:"); 
	create(L);
	printf("\n");
	sort(L);
	putdata(L);
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值