| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 872 人关注过本帖
标题:求各位大侠帮忙看哈C语言版数据结构中两递增单链表的合并问题
只看楼主 加入收藏
wei_fan
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2008-10-16
结帖率:100%
收藏
 问题点数:0 回复次数:4 
求各位大侠帮忙看哈C语言版数据结构中两递增单链表的合并问题
#include <stdio.h>
#include<malloc.h>
#define  null 0
typedef struct node
 {
   int data;
   struct node *next;
 }linklist;


void input(linklist *L)//输入函数
{
    linklist *r,*p,*head;
    int i,j;
    r=L;
    printf("input nums\n");
    for(i=0;i<3;i++)
    {
      scanf("%d",&j);
       p=(linklist *)malloc(sizeof(linklist));
      p->data=j;
      head=r;
      r->next=p;
      r=r->next;
    }
    r->next=null;
    r=L->next;
    while(r!=null)
    {
        printf("%2d",r->data);
        r=r->next;
    }
    printf("\n");
}

void swap(linklist *A,linklist*B,linklist*C)//两单链表合并函数
{
    linklist *p , *q, *r,*s;
    p=A;
    q=B;
    C=A;r=A;
    while(p!=null||q!=null)
        if(p->data<q->data)
        {
            r=p;
            p=p->next;
            p=q;
        }
        else(p->data>q->data)
        {
            s=q->next;
            r->next=q;
            r=p;
            p=s;
            
        }
        if(q!=null) r->next=q;
}


 void output(linklist*L)//输出函数
 {
     linklist *p;
        
    
     p=L;
   
     while(p!=null)
     {
         printf("%2d",p->data);

         p=p->next;
     }
 }


void main()
{
    linklist *L1,*L2,*L3;
    L1=L2=L3=(linklist *)malloc(sizeof(linklist));
    input(L1);
    input(L2);
    swap(L1,L2,L3);
    output(L3);

}

就是那个加上合并函数后程序就不能输出结果了 ,到底那错了啊?
搜索更多相关主题的帖子: 数据结构 C语言 单链 递增 
2008-10-16 21:59
wei_fan
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2008-10-16
收藏
得分:0 
怎么没人
2008-10-16 22:35
sweetyhappy
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-10-16
收藏
得分:0 
我先看看
2008-10-17 20:10
很远的那颗星
Rank: 2
等 级:新手上路
威 望:4
帖 子:544
专家分:0
注 册:2008-6-30
收藏
得分:0 
C=A;r=A;
    while(p!=null||q!=null)
        if(p->data<q->data)
        {
            r=p;
            p=p->next;
            p=q;
        }
        else(p->data>q->data)           //改为  else
        {
            s=q->next;

Fighting~~~~~~~~
2008-10-17 20:57
sweetyhappy
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-10-16
收藏
得分:0 
求救!!!
#include<iostream>
using namespace std;
#define null 0
typedef struct node
{
 int data;
 struct node *next;
}linklist;
void input(linklist *L)
{
 linklist *r,*p,*head;
 int i,j;
 r=L;
 printf("input nums\n");
 for(i=0;i<3;i++)
 {
  scanf("%d",&j);
  p=(linklist*)malloc(sizeof(linklist));
  p->data=j;
  head=r;
  r->next=p;
  r=r->next;
 }
 r->next=null;
 r=L->next;
 while(r!=null)
 {
  printf("%2d",r->data);
  r=r->next;
 }
 printf("\n");
 
}
void output(linklist *L)
{
 linklist *p;
 p=L;
 while(p!=null)
 {
  printf("%2d",p->data);
  p=p->next;
 }
 printf("\n");
}
void Mergelist_L(linklist *a,linklist *b,linklist *c)
{
 linklist *pa,*pb,*pc;
 pa=a->next;
 pb=b->next;
 c=pc=a;
 while(pa&&pb)
 {
  if(pa->data<=pb->data)
  {
   if(pa->data==pb->data)   //避免有相同的
    pb=pb->next;
   pc->next=pa;
   pc=pa;
   pa=pa->next;
   
  }
  else
  {
   pc->next =pb;
   pc=pb;
   pb=pb->next;
  }
  
 }
 pc->next=pa?pa:pb;
 
 output(c);
 
 
 free(b);

}
int main()
{
 linklist *L1,*L2,*L3;
    L1=L2=L3=(linklist *)malloc(sizeof(linklist));
    input(L1);
    input(L2);
 Mergelist_L(L1,L2,L3);
 
 return 0;
}
改了一下,但输出的第一个数却是随机的。为什么?请帮我看一下!!!!
2008-10-17 21:23
快速回复:求各位大侠帮忙看哈C语言版数据结构中两递增单链表的合并问题
数据加载中...
 
   



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

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