| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 417 人关注过本帖
标题:求解决一个单链表插入排序的问题
只看楼主 加入收藏
抹茶裙边
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2015-10-3
结帖率:60%
收藏
已结贴  问题点数:20 回复次数:6 
求解决一个单链表插入排序的问题
程序代码:
typedef struct node
{   
    int data;
    struct node *next;
}Linknode,*Link;

void Insertsort(Link L)
{
   Link p,q,r,u;
   p=L->next;L->next=NULL;//置空表
   while(p!=NULL)
{
  r=L;
  q=L->next;
  while(q!=p&&q->data<=p->data)
{
  r=q;q=q->next;//q=L,而L已经被置空表了,上面说L->next=NULL;q->next不是为空了吗??
}
u=p->next;p->next=r->next;r->next=p;p=u;
}
}
2015-10-23 10:00
抹茶裙边
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2015-10-3
收藏
得分:0 
求解啊。有人吗
2015-10-23 10:40
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
不理解也不奇怪,,本来就是代码有问题.



[fly]存在即是合理[/fly]
2015-10-23 10:45
抹茶裙边
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2015-10-3
收藏
得分:0 
回复 3楼 azzbcc
代码没有问题吧。。这是北科大2011年的考研题
2015-10-23 10:54
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:10 
程序代码:
typedef struct node
{   
    int data;
    struct node *next;
}Linknode,*Link;

void Insertsort(Link L)
{
   Link p,q,r,u;
   p=L->next;L->next=NULL;//置空表
   while(p!=NULL)
  {
      r=L;
      q=L->next;
      while(q!=p&&q->data<=p->data)
      {
          r=q;q=q->next;//q=L,而L已经被置空表了,上面说L->next=NULL;q->next不是为空了吗??
                                //L->next=NULL;这句话是说L的指针域为NULL
      }
     u=p->next;p->next=r->next;r->next=p;p=u;
  }
}

剑栈风樯各苦辛,别时冰雪到时春
2015-10-23 12:19
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
我希望你能对分析有困难的代码进行排版,可能浪费时间,但对分析有帮助

剑栈风樯各苦辛,别时冰雪到时春
2015-10-23 12:37
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:10 
代码对不对,跑一下就清楚了

程序代码:
#include <stdio.h>
#include <stdlib.h>

typedef struct node
{
    int data;
    struct node *next;
}Linknode, *Link;

void Insertsort(Link L)
{
    Link p, q, r, u;
    p = L->next;  L->next = NULL;//置空表
    while (p != NULL)
    {
        r = L;
        q = L->next;
        while (q != p && q->data <= p->data)
        {
            r = q;q = q->next;//q=L,而L已经被置空表了,上面说L->next=NULL;q->next不是为空了吗??
        }
        u = p->next;
        p->next = r->next;
        r->next = p;
        p = u;
    }
}

Link CreateLink(int *array, size_t size)
{
    // 创建带头节点链表
    Link head = calloc(1, sizeof(Linknode));
    Link p = head;

    for (size_t i = 0;i < size;i++)
    {
        Link s = calloc(1, sizeof(Linknode));
        s->data = *(array + i);

        // 尾插法
        p->next = s;
        p       = s;
    }

    return head;
}

void Destory(Link l)
{
    if (l)  Destory(l->next);
    free(l);
}

void PrintLink(Link l)
{
    Link p = l;

    while (p = p->next)
    {
        printf("%3d", p->data);
    }
    printf("\n");
}

int main(int argc, char *argv[])
{
    int sa[] = {2, 5, 7, 3};
    Link link = CreateLink(sa, sizeof(sa) / sizeof(int));

    PrintLink(link);

    Insertsort(link);
    PrintLink(link);

    Destory(link);

    return 0;
}



[fly]存在即是合理[/fly]
2015-10-23 13:18
快速回复:求解决一个单链表插入排序的问题
数据加载中...
 
   



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

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