| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 248 人关注过本帖
标题:以下是我写的链表的有序合并,可是却出现图片的问题,有的输出正确,有时输 ...
只看楼主 加入收藏
涧边幽草
Rank: 2
等 级:论坛游民
帖 子:37
专家分:15
注 册:2015-11-4
结帖率:88.89%
收藏
已结贴  问题点数:20 回复次数:1 
以下是我写的链表的有序合并,可是却出现图片的问题,有的输出正确,有时输出错误请大神帮忙找找问题所在
以下是我写的链表的有序合并,有的输出正确,有时输出错误请大神帮忙找找问题所在
#include "stdio.h"
#include "malloc.h"
#define LEN sizeof(struct DATA)

struct DATA
{
     long num;
     struct DATA *next;
};

struct DATA *create(int n)
{
     struct DATA *head=NULL,*p1=NULL,*p2=NULL;
     int i;
     for(i=1;i<=n;i++)
     {  p1=(struct DATA *)malloc(LEN);
        scanf("%ld",&p1->num);
        p1->next=NULL;
        if(i==1) head=p1;
        else p2->next=p1;
        p2=p1;
      }
      return(head);
}

struct DATA *merge(struct DATA *head, struct DATA *head2)
{
    struct DATA *p;
    p=head;
    while(p->next!=NULL)
    {
        p=p->next;
    }
    p->next=head2;
    return head;
}

struct DATA *insert(struct DATA *head, struct DATA *d)
{
    struct DATA *p0,*p1,*p2;
    p0=head;p1=d;
    if(head==NULL) head=p1;
    else
    {
        while(p1->num>p0->num&&p0->next!=NULL)
        {
            p2=p0;p0=p0->next;
        }
         if( p1->num < p0->num )
        {  if( head==p0 ) head=p1;
           else p2->next=p1;
         p1->next=p0; }
        else {  p0->next=p1;}
    }
    return head;
}

struct DATA *sort(struct DATA *head)
{
    struct DATA *p1,*p2;
    p1=head;p2=head;
    p1=p1->next;
    p2->next=NULL;
    p2=p1;
    while(p1->next!=NULL)
    {
        p1=p1->next;
        p2->next=NULL;
        head=insert(head,p2);
        p2=p1;

    }
    head=insert(head,p2);

    return head;
}

void print(struct DATA *head)
{
    struct DATA *p;
    p=head;
    while(p!=NULL)
    {
        printf("%ld",p->num);
        p=p->next;
        printf("\n");
    }
}

main()
{
    struct DATA *head, *head2;
    int n;
    long del_num;
    scanf("%d",&n);
    head=create(n);
    scanf("%d",&n);
    head2=create(n);
    head = merge(head, head2);
    head = sort(head);
    print(head);
}
2015-12-05 00:08
newdos
Rank: 9Rank: 9Rank: 9
等 级:禁止访问
威 望:6
帖 子:251
专家分:1169
注 册:2012-8-13
收藏
得分:20 
大神们都很忙,你得自己学会下断点调试,既然都学到数据结构了,有必要学习一下如何调试,花点时间是值得的。法二,你也可以在代码可能出问题的地方用printf打印变量值,在IDE出来之前,大家都这么干。linux下gdb也是命令行方式调试,不要失去这个学习调试的机会,这是编程的基本功。加油努力吧。
2015-12-05 14:46
快速回复:以下是我写的链表的有序合并,可是却出现图片的问题,有的输出正确,有 ...
数据加载中...
 
   



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

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