| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 573 人关注过本帖
标题:链表合并问题,请高手解答
只看楼主 加入收藏
qt765765
Rank: 1
等 级:新手上路
帖 子:5
专家分:9
注 册:2009-10-8
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
链表合并问题,请高手解答
/* 这个程序是让两个链表合并,但不知为什么,合并的结果总是链表2的结果,请高手指教,谢谢*/

#include <alloc.h>
#include <stdio.h>

typedef struct node{
    char data;
    struct node *next;
} listnode;

typedef listnode *linklist;
listnode *p;

linklist createlist(void)
{
    char ch;
    linklist head,r;
    listnode *p;
    head=NULL;
    r=head;
    printf("please input the data of list.");
    ch=getchar();
    while(ch!='\n')
    {
        p=(listnode*)malloc(sizeof(listnode));
        p->data=ch;
        p->next=NULL;
        r->next=p;
        r=p;
        ch=getchar();
    }
    return (head);
}

linklist concatenate(linklist list1,linklist list2)
{
    listnode *temp;

    if(list1==NULL)
    {
        return list2;
    }
    else
    {
        if(list2!=NULL)
        {
            for(temp=list1;temp->next;temp=temp->next)    ;
            temp->next=list2;
        }
    }
    return list1;
}

void main()
{
    linklist list1,list2,list3,temp1;
    list1=createlist();
    list2=createlist();
    list3=concatenate(list1,list2);
    do
    {
        printf("%c",list3->data);
        list3=list3->next;
    }while(list3!=NULL);
    printf("\n");
    getch();
}
搜索更多相关主题的帖子: 解答 链表 
2009-11-03 11:05
我爱中国
Rank: 2
等 级:论坛游民
帖 子:20
专家分:20
注 册:2009-4-2
收藏
得分:20 
我第一次看的时候 我把head=NULL改成head=(listnode*)malloc(sizeof(listnode));
2009-11-10 00:29
我爱中国
Rank: 2
等 级:论坛游民
帖 子:20
专家分:20
注 册:2009-4-2
收藏
得分:0 
但仔细一看还有问题 就是指针的一些小细节

1.函数linklist concatenate(linklist list1,linklist list2)里面的temp->next=list2应该改成
temp->next=list2->next

2. void main()里面的
                       printf("%c",list3->data);
                        list3=list3->next;
应该调换顺序
                       list3=list3->next;
                       printf("%c",list3->data);
2009-11-10 00:47
我爱中国
Rank: 2
等 级:论坛游民
帖 子:20
专家分:20
注 册:2009-4-2
收藏
得分:0 
这里用的感觉有点错 不知道是不是我没看懂

for(temp=list1;temp->next;temp=temp->next)    ;
            temp->next=list2;
2009-11-10 01:11
快速回复:链表合并问题,请高手解答
数据加载中...
 
   



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

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