程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> 數據結構-為什麼這個程序輸出單鏈表表的時候為什麼只輸出第一個結點呢??

數據結構-為什麼這個程序輸出單鏈表表的時候為什麼只輸出第一個結點呢??

編輯:編程解疑
為什麼這個程序輸出單鏈表表的時候為什麼只輸出第一個結點呢??

#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 ) ;

}

最佳回答:


#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. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved