#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
//單鏈表的定義
typedef int elemtype;
typedef struct node
{
elemtype data;
struct node *next;
}node,*linklist;
//單鏈表的初始化
void initlist(linklist l)
{
l=(linklist)malloc(sizeof(node));
(l)->next=NULL;
}
//頭插法建立單鏈表
void createfromhead(linklist l)
{
node *s;
char c;
int flag=1;
while(flag)
{
c=getchar();
if(c!='0')
{
s=(node*)malloc(sizeof(node));
s->data=https://bbs.csdn.net/topics/c;
s->next=l->next;
l->next=s;
}
else
flag=0;
}
}
//合并兩個有序的單鏈表
linklist mergelinklist(linklist LA,linklist LB)
//將遞增有序的單鏈表LA和LB合并成一個遞增有序的單鏈表LC
{
node *pa,*pb;
linklist LC,r;
r=(linklist)malloc(sizeof(node));
//將LC初始值空表,pa和pb分別指向兩個單鏈表LA,LB中的第一個節點,r初值為LC且r永遠指向LC的表尾
pa=LA->next;
pb=LB->next;
LC=LA;
LC->next=NULL;
r=LC;
//當兩個標中均未處理完是,比較選擇較小的節點插入到新表LC中
while(pa!=NULL&&pb!=NULL)
{
if(pa->data<=pb->data)
{r->next=pa; r=pa; pa=pa->next;}
else
{r->next=pb; r=pb;pb=pb->next;}
}
if(pa) //若表L未完,將表LA的后續元素鏈到新表LC的表尾
r->next=pa;
else //否則將LB中的后續元素鏈到新表LC表尾
r->next=pb;
free(LB);
return LC;
}
void PrintList(linklist l)
{
linklist p=l->next;
while(p)
{
printf("%c\n",p->data);
p=p->next;
}
}
void main()
{
linklist LA,LB,LC;
LA= (linklist)malloc(sizeof(node));
LB= (linklist)malloc(sizeof(node));
LC= (linklist)malloc(sizeof(node));
initlist(LA);
initlist(LB);
initlist(LC);
createfromhead(LA);
PrintList(LA);
createfromhead(LB);
PrintList(LB);
mergelinklist(LA,LB);
PrintList(LC);
}
哪兒錯了呢,為什么執行不出來呢
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/185081.html
標籤:C語言
上一篇:獨家對話 HybridOS 作業系統掌門人魏永明:“我們的目標是取代物聯網中的安卓” | 人物志
下一篇:關于String回圈問題
