| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1617 人关注过本帖
标题:把一个无序单链表排序,有的问题
取消只看楼主 加入收藏
wwqiu
Rank: 2
等 级:论坛游民
帖 子:19
专家分:12
注 册:2010-7-28
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:2 
把一个无序单链表排序,有的问题
把一个无序的单链表排序,变成递增,但是看了好久都不行啊,感觉应该是最后一个函数sort(代码的最后一个子函数)写得有问题,希望能改一下
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef int datatype;
typedef struct node
{
    datatype data;
    struct node *next;
}listnode,*linklist;
void main()
{
    void init(linklist *head);
    int insert(linklist head,int i,datatype e);
    void display(linklist head);
    void sort(linklist head);
    datatype a[]={66,2,4,1,86,77,356,7};
    int i;
    linklist L;
    init(&L);
    for(i=1;i<=sizeof(a)/sizeof(a[0]);i++)
        if(insert(L,i,a[i-1])==0)
            return;
    printf("排序前的链表元素为:\n");
    display(L);
    sort(L);
    printf("排序后链表元素为:\n");
    display(L);
}

void init(linklist *head)
{
    if((*head=(linklist)malloc(sizeof(listnode)))==NULL)
        exit(-1);
    (*head)->next=NULL;
}

int insert(linklist head,int i,datatype e)
{
    listnode *p,*pre;
    int j;
    pre=head;
    j=0;
    while(pre->next!=NULL&&j<i-1)
    {
        pre=pre->next;
        j++;
    }
    if(j!=i-1)
        return;
    if((p=(linklist)malloc(sizeof(listnode)))==NULL)
        exit(-1);
    p->data=e;
    p->next=pre->next;
    pre->next=p;
    return 1;
}

void display(linklist head)
{
    listnode *p;
    p=head->next;
    while(p)
    {
        printf("%4d",p->data);
        p=p->next;
    }
    printf("\n");
}

void sort(linklist head)
/*排序*/
{
    listnode *p,*q,*t,*s;
    p=head->next;/*p指向第一个结点,q指向第二个结点,然后使第一个结点和头结果在链表中断开*/
    q=p->next;
    p->next=NULL;
    while(q->next!=NULL)
    {
        s=head->next;
        t=q->next;/*t指向准备插入结点的下一个结点*/
        while(s&&q->data>s->data)
        {
            p=s;
            s=s->next;/*找到插入位置,p指向插入位置的前一结点*/
        }
       
           
            q->next=p->next;/*把结点到适合位置插入*/
            p->next=q;
            q=t;
       
    }
}


   
    


搜索更多相关主题的帖子: 单链 
2010-08-25 22:06
wwqiu
Rank: 2
等 级:论坛游民
帖 子:19
专家分:12
注 册:2010-7-28
收藏
得分:0 
我没想过啊,能给出代码吗,谢谢
2010-08-26 18:52
wwqiu
Rank: 2
等 级:论坛游民
帖 子:19
专家分:12
注 册:2010-7-28
收藏
得分:0 
那我原来的代码哪里错了,可以帮我指出来吗
2010-08-27 09:26
快速回复:把一个无序单链表排序,有的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031683 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved