LinkList a, b, c;
網站建設哪家好,找成都創新互聯!專注于網頁設計、網站建設、微信開發、微信平臺小程序開發、集團企業網站建設等服務項目。為回饋新老客戶創新互聯還提供了鼓樓免費建站歡迎大家使用!
printf("building a\n");
a = CreatLinlList();
printf("building b\n");
b = CreatLinlList();
printf("a is\n");
PrintList(a);
printf("b is\n");
PrintList(b);
c=merge(a,b)
printf("the merge is\n");
PrintList(c);
deleteLinkList(a);
deleteLinkList(b);
deleteLinkList(c);
應該把CreatLinlList()改為
LinkList CreatLinlList()
{
LinkList L;
Lnode *s,*r;
int x;
int len; // int flag;
L=r=NULL;
printf("input length:"); //
scanf("%d",len); //
scanf("%d",x);
while(len-- != 0) // while(x!=flag)
{
s=(Lnode *)malloc (sizeof (Lnode));
s-data = x;
if(L==NULL)
L=s;
else
r-next=s;
r=s;
scanf("%d",x);
}
if(r!=NULL)
r-next=NULL;
return L;
}
創建鏈表的函數有些問題吧
student *p;
student *q=I;
for (j=0;ji;j++)
{
p=(student*)malloc(sizeof(student));
p-next=Null;
q-next=p;
q=p;
}
注釋的部分是采用數組實現的,未注釋的是采用鏈表實現的,可以將鏈表實現的注釋起來和數組實現的運行做對比
#include "stdio.h"
#include "stdlib.h"
/*采用數組實現
int merge(int* a,int* b,int*c,int alen,int blen)
{
int i=0,j=0,k=0;
//每次將a和b中當前的元素進行比較,并將小的一個存入到c中
while(ialen jblen)
{
if(a[i]b[j])
c[k]=a[i++];
else c[k]=b[j++];
k++;
}
//其中一個數組已經結束,將另一個數組剩余部分全部復制到c即可
while(ialen)
c[k++]=a[i++];
while(jblen)
c[k++]=b[j++];
return k;//返回值為c的有效長度
}
void main()
{
int a[]={1,3,5,7,9,10,12,14};
int b[]={2,4,6,8,10,11,12,13};
int c[100];
int i,clen;
clen=merge(a,b,c,sizeof(a)/sizeof(*a),sizeof(b)/sizeof(*b));
for(i=0;iclen;i++)
printf("%d ",c[i]);
printf("\n");
}
*/
struct Node
{
int value;
struct Node* next;
};
struct LinkList
{
struct Node* head;
};
//將數組a賦值給鏈表list
void setLinkList(int* a,int alen,struct LinkList* list)
{
int i;
struct Node* p,*temp;
list-head=(struct Node*)malloc(sizeof(struct Node));
p=list-head;
for(i=0;ialen;i++)
{
p-value=a[i];
p-next=(struct Node*)malloc(sizeof(struct Node));
temp=p;
p=p-next;
}
free(p);
temp-next=NULL;//尾指針賦NULL
}
void mergeLinkList(struct LinkList* a,struct LinkList* b,struct LinkList* c)
{
struct Node *p=a-head,*q=b-head,*r,*temp;
c-head=(struct Node*)malloc(sizeof(struct Node));
r=c-head;
while(p!=NULL q!=NULL)
{
if(p-valueq-value)
{
r-value=p-value;
p=p-next;
}
else
{
r-value=q-value;
q=q-next;
}
r-next=(struct Node*)malloc(sizeof(struct Node));
temp=r;
r=r-next;
}
while(p!=NULL)
{
r-value=p-value;
p=p-next;
r-next=(struct Node*)malloc(sizeof(struct Node));
temp=r;
r=r-next;
}
while(q!=NULL)
{
r-value=q-value;
q=q-next;
r-next=(struct Node*)malloc(sizeof(struct Node));
temp=r;
r=r-next;
}
free(r);
temp-next=NULL;
}
#define MAX_LEN 1000
void main()
{
int a[MAX_LEN];//={1,3,5,7,9,10,12,14};
int b[MAX_LEN];//={2,4,6,8,10,11,12,13};
int alen,blen,i;
struct LinkList alist,blist,clist;
struct Node* p;
printf("Please input the length of a : ");
scanf("%d",alen);
fflush(stdin);
printf("Please input %d number and separate them with space :\n",alen);
for(i=0;ialen;i++)
scanf("%d",a+i);
fflush(stdin);//這句很有必要,當輸入的數據超過alen時,后面的數據將被忽略
printf("Please input the length of b : ");
scanf("%d",blen);
fflush(stdin);
printf("Please input %d number and separate them with space :\n",blen);
for(i=0;iblen;i++)
scanf("%d",b+i);
fflush(stdin);
setLinkList(a,alen,alist);
setLinkList(b,blen,blist);
mergeLinkList(alist,blist,clist);
p=clist.head;
printf("The result is :\n");
while(p!=NULL)
{
printf("%d ",p-value);
p=p-next;
}
printf("\n");
}
新聞標題:C語言函數表格合并 c語言合并兩個集合
鏈接地址:http://vcdvsql.cn/article16/doisdgg.html
成都網站建設公司_創新互聯,為您提供關鍵詞優化、品牌網站設計、網站策劃、軟件開發、網站制作、服務器托管
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯