#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int data;
struct node *next;
}Node,*LNode;
//创建不带头节点的链表
void create(LNode &head,int n)
{
int i;
LNode p,q;
for(i=0;i<n;i++)
{
q=(LNode)malloc(sizeof(int)); //开辟空间
printf("请输入第%d个数",i+1);
scanf("%d",&q->data);
q->next=NULL; //每次都让q->next指向空
if(i==0)
{
p=head=q; //创建第一个节点
}
else
{
p->next=q;
p=q;
}
}
}
/*
//获得链表长度
int length(LNode head)
{
int i=0;
LNode p=head;
while(p)
{
i++;
p=p->next;
}
return i;
}
*/
//对链表中数据进行排序 从小到大
void sort(LNode &head,int length)
{
int temp,j,i;
LNode p=head,q;
for(i=0;i<length-1;i++)
{
q=p;
// p=p->next;
for(j=i+1;j<length;j++)
{
if(q->data > p->next->data) //交换里面数据
{
temp=q->data;
q->data = p->next->data;
p->next->data = temp;
}
p=p->next;
}
p=q->next;
}
}
//输出数据
void printout(LNode head)
{
LNode p=head;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
int main()
{
int i;
LNode p=NULL;
printf("要输入几个数据?");
scanf("%d",&i);
create(p,i);
printout(p);
sort(p,i);
printout(p);
return 0;
}
对链表进行排序
最新推荐文章于 2022-11-06 22:13:44 发布