进行链表的排序的一种方法,

来源:互联网 发布:淘宝特种经营有什么用 编辑:程序博客网 时间:2024/06/06 17:04

进行单链表排序的方法,不改变链表的链接顺序,只是改变每个链表节点中的数据

head->p0->p1->p2->p3->NULL;
typedef struct LinkNode
{   
int data;
struct LinkNode *next;
}node;


node  *create(int n)
{
node *head = (node*)malloc(sizeof(node));
int x;
    node *p = head;
while(n)
{   
printf("请输入每个节点数据:");
        scanf("%d",&x);
node *pNode = (node*)malloc(sizeof(node));
pNode->data = x;
p->next = pNode;
p = pNode;
n--;


}
p->next=NULL;
return head;
}


node *LinkNodepaixu(node *head)
{
node *p ,*q ,*min;
int data,temp;
p = head->next;
for(p=head->next ; p->next != NULL ; p=p->next)
{
min = p;
for(q= p->next ; q ; q=q->next)
{
if(q->data < min->data)
{
min = q;
}
}
if(min != q)
{
            temp = min->data;
min->data = p->data;
p->data = temp;
}
}
return head;
}
void print(node *head)
{
     node *p;
p = head->next;
while(p!=NULL)
{
 cout<<p->data;
 p =p->next;
}
}


void main()
{
     int n;
printf("请输入节点个数:");
scanf("%d",&n);
node *head;
head = create(n);
LinkNodepaixu(head);
print(head);




}

原创粉丝点击