s2unn 2016-10-06 10:13 采纳率: 100%
浏览 1364
已采纳

为什么这个程序输出单链表表的时候为什么只输出第一个结点呢??

#include
#include
#include
typedef char ElemType;

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

 void CreateList( LinkList &L , int n )

{
//LNode *q , *p;
LinkList p;
L = ( LinkList ) malloc ( sizeof ( LNode ));
L->next = NULL ;
//q = L;
for( int i = 0 ; i < n ; i++ )
{

p = ( LinkList ) malloc ( sizeof ( LNode ));
scanf ( "%c", &p->data );
/*p->next = q->next ;
q->next = p;
q = p ; */
p->next = L->next ;
L->next = p ;
}
}
void DipList ( LinkList L )
{
LinkList p ;
p = L->next;
while ( p != NULL )
{
printf("%c" , p->data);
p=p->next ;

}
}

void MergeList ( LinkList ha , LinkList hb , LinkList &hc ,int m ,int n)
{
LNode *q , *p ;
p = ha ; q = hb ;
int j = 0 , i = 0;
while ( i< m && j < n )
{
i++ ; j++ ;
p = p->next ;
q = q->next ;
}
if( i {
hc = hb;
p = ha ->next ;
q->next = ha->next ;
free(ha) ;
}

if( j < n )
{
hc = ha ;
q = hb->next ;
p->next = hb->next ;
free(hb);
}
}
void main()
{
int m ,n ;
LinkList ha , hb ,hc;
printf("请输入单链表a的长度:");
scanf("%d", &m );
printf( "请输入单链表a的元素:\n") ;
CreateList( ha , m);
printf("请输入单链表b的长度:");
scanf("%d", &n );
printf( "请输入单链表b的元素:\n") ;
CreateList( hb , n);
MergeList (ha , hb ,hc , m , n) ;
printf( "合并后的单链表为:") ;
DipList ( hc ) ;

}

  • 写回答

2条回答 默认 最新

  • YXTS122 2016-10-07 03:28
    关注

    #include<stdio.h>
    #include<stdlib.h>
    typedef char ElemType;
    typedef struct LNode
    {
    ElemType data[2];
    struct LNode next;
    }LNode , *LinkList ;
    void CreateList(LinkList &L,int n )
    {
    LNode *q , *p;
    //LinkList p;
    L = ( LinkList ) malloc ( sizeof ( LNode ));
    L->next = NULL ;
    q = L;
    for( int i = 0 ; i < n ; i++ )
    {
    p = ( LinkList ) malloc ( sizeof ( LNode ));
    scanf ( "%s", p->data );
    getchar();
    p->next = q->next ;
    q->next = p;
    q = p ;
    /
    p->next = L->next ;
    L->next = p ;*/
    }
    }
    void DipList ( LinkList L )
    {
    LinkList p ;
     p = L->next;
    while ( p != NULL )
    {
    printf("%s " , p->data);
    p=p->next ;
    }
    }
    void MergeList ( LinkList ha , LinkList hb , LinkList &hc ,int m ,int n)
    {
    LNode *q , *p ;
    p = ha ;
    q = hb ;
    int j = 0 , i = 0;
    while ( i<m && j <n )
    {
    i++ ;
    j++ ;
    p = p->next ;
    q = q->next ;
    }
    if ( i<m)
    {
    hc = hb;
    p = ha ->next ; 
    q->next = ha->next ;
    free(ha) ;
    }
    if ( j < n )
    {
    hc = ha ;
    q = hb->next ;
    p->next = hb->next ;
    free(hb);
    }
    }
    int main()
    {
    int m ,n ;
    LinkList ha , hb ,hc;
    printf("请输入单链表a的长度:");
    scanf("%d", &m );
    printf("请输入单链表a的元素:\n") ; 
    CreateList( ha , m);
    DipList(ha);
    printf("请输入单链表b的长度:"); 
    scanf("%d", &n );
    printf("请输入单链表b的元素:\n") ;
    CreateList( hb , n);
    DipList(hb);
    MergeList (ha , hb ,hc , m , n) ;
    printf( "合并后的单链表为:") ;
    DipList ( hc ) ;
    return 0;
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP