| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 466 人关注过本帖
标题:l链表的合并问题 为什么我的MergList_L函数不能执行呢?求助
只看楼主 加入收藏
shayoyong
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-3-12
收藏
 问题点数:0 回复次数:0 
l链表的合并问题 为什么我的MergList_L函数不能执行呢?求助
问题如题所述,代码如下

#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
#define OVERFLOW 0


typedef struct LNode
{
    int data;
    struct LNode *next;
}LNode,*LinkList;

/*
int InitList(LinkList L)
{
    L=NULL;
    return OK;
}  不带头结点的初始化
*/
int InitList_L(LinkList *L)     //建立一个只含头结点的空链表
{
    (*L)=(LinkList)malloc(sizeof(LNode));
    if(!L)
        exit(OVERFLOW);
    (*L)->next=NULL;
    return OK;
}

//头文件LinkList .h结束
int CreateList_L(LinkList *L,int n) //建立含n个元素的单链表
{
    LinkList p,q;
    int i;
    printf("Input the datas : \n");
    q=*L;
    for(i=0;i<n;i++ )
    {
       p=(LinkList)malloc(sizeof(LNode));
       scanf("%d",&p->data);
        p->next=NULL;
       q->next=p;
       q=q->next;
      /*
      p->next=q->next;
      q->next=p;
      q=p;
     */
    }
    return OK;
}

int TraverseList_L(LinkList L)    //遍历链表
{
    LinkList p;
    p=L->next;
    while(p)
    {
        printf("%d ",p->data);
        p=p->next;
    }
    printf("\n");
    return OK;
}
void MergList_L(LinkList *La,LinkList *Lb,LinkList *Lc)
{   
     
   
    LinkList pa,pb,pc;

    pa=(*La)->next;pb=(*Lb)->next;
    (*Lc)=pc=(*La);
    while( pa&&pb)
    {
         if(pa->data <= pb->data)
         {pc->next = pa; pc=pb; pa=pa->next;}   //这里错把pb赋给pc了 。囧大
        else
        {pc->next=pb;pc=pb;pb=pb->next;}
    }   
    pc->next=pa?pa:pb;
    free(Lb);
}
int main()
{
   
     
   
    int n1,n2;
    LinkList La,Lb,Lc;
   
    InitList_L(&La);
    InitList_L(&Lb);
    InitList_L(&Lc);
   
    printf("Input the length of the list La: ");
    scanf("%d",&n1);
    CreateList_L(&La,n1);
   
    printf("output the datas:");
    TraverseList_L(La);
   
    printf("Input the length of the list Lb: ");
    scanf("%d",&n2);
    CreateList_L(&Lb,n2);
   
    printf("output the datas:");
    TraverseList_L(Lb);
   
    printf("MergList la and lb : ");
    MergList_L(&La,&Lb,&Lc);
   
   
    printf("output the datas: ");
    TraverseList_L(Lc);
   
    //system("pause");
    return 0;
}


问题已解决

[ 本帖最后由 shayoyong 于 2010-3-13 09:02 编辑 ]
搜索更多相关主题的帖子: next include return 
2010-03-12 21:48
快速回复:l链表的合并问题 为什么我的MergList_L函数不能执行呢?求助
数据加载中...
 
   



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

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