| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 233 人关注过本帖
标题:求助,链表快排
只看楼主 加入收藏
txzhanghuan
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-10-28
收藏
 问题点数:0 回复次数:0 
求助,链表快排
程序代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct list{
    int num;
    int n;    //快排中的序号,比如第一个,第二个
    char ch[20];
    list *left,*right;
    };                       
int size=sizeof(struct list);
void qsort(struct list *x,struct list *y);
void main()
{
    list *head,*p,*begin,*end;
    int number,i;
    char c[20];
    head=NULL;
    i=0;
    begin=(struct list *) malloc(size);
    end=(struct list *) malloc(size);
    while (number!=0)
    {
        scanf("%d",&number);
        if (number==0)
            break;
        scanf("%s",c);
        i++;
        p=(struct list *) malloc(size);
        p->num=number;
        p->n=i;
        strcpy(p->ch,c);
        p->left=head;
        p->right=NULL;
        head=p;
    }            //建立链表
    begin=end=head;
    while ((begin->left)!=NULL)
        begin=begin->left;//头指针和尾指针
    qsort(begin,end);
    while ((begin->right)!=NULL)//感觉输出好像错了
    {
        printf("%d %s",begin->num,begin->ch);
        begin=begin->right;
    }
}
void qsort(struct list *x,struct list *y)//这是递归的快排
{
    int mid;
    struct list *i,*j,*temp;
    mid=x->num;
    i=x;j=y;
    temp=(struct list *) malloc(size);
    do
    {
        while((i->num<mid)&&(i!=NULL))
            i=i->right;
        while((j->num>mid)&&(j!=NULL))
            j=j->right;
        if ((j->n)>=(i->n))
        {
            strcpy(temp->ch,i->ch);//感觉是这里错。。。。
            strcpy(i->ch,j->ch);
            strcpy(j->ch,temp->ch);
            temp->n=j->n;j->n=i->n;i->n=temp->n;
        }
        if (i->n<=y->n)
            qsort(i,y);
        if (j->n>=x->n)
            qsort(x,j);
    }while ((j->n)>=(i->n));
    free(temp);
}
求大神给点指导。。。。是链表的快排
2011-11-02 11:10
快速回复:求助,链表快排
数据加载中...
 
   



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

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