|
|
#2
YueWuSS2011-10-29 04:06
回复 楼主 新手老羊
//修改后的程序如下,修改部分已加色
#include<stdio.h> #include<stdlib.h> #include<malloc.h> typedef struct LONDE { int data; struct LONDE *next; }LinkList; void initlist(LinkList *L) { L=(LinkList *)malloc(sizeof(LinkList)); if(!L) return; L->next=NULL; } void creatlist(LinkList *L,int a[],int n) //函数名 { if(!L) return; LinkList *s,*r; int i; // L=(LinkList *)malloc(sizeof(LinkList)); r = L; for(i=0;i<n;i++) { s = (LinkList *)malloc(sizeof(LinkList)); if(!s) return; s->data = a[i]; s->next = NULL; r->next=s; r=s; } } void mergelist_l(LinkList *la,LinkList *lb,LinkList *lc) { if(!(la&&lb&&lc)) return; struct LONDE *pa,*pb,*pc; pa=la->next; pb=lb->next; //lc=la; pc=lc; while(pa && pb) { if(pa->data<=pb->data) { pc->next=pa; pc=pa; pa=pa->next; } else { pc->next=pb; pc=pb; pb=pb->next; } } pc->next=pa?pa:pb; // free(lb); } void deletef(LinkList *L) //与init相对的清理函数 { if(!L) return; LinkList *p = NULL; do { p = L; L = L->next; free(p); }while(L); } void main() { int a[5]={1,3,4,5,6},b[4]={1,2,3,5}; //初始值设定项太多 LinkList *sp1 = NULL; LinkList *sp2 = NULL; LinkList *sp3 = NULL; initlist(sp1); initlist(sp2); initlist(sp3); creatlist(sp1, a, 5); //“creatlist”: 不能将参数 2 从“int”转换为“int []” creatlist(sp2, b, 4); mergelist_l(sp1,sp2,sp3);//从“LinkList **”转换为“LinkList *” deletef(sp1); deletef(sp2); deletef(sp3); printf("OK!\n"); } [ 本帖最后由 YueWuSS 于 2011-10-29 04:08 编辑 ] |
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct LONDE
{
int data;
struct LONDE *next;
}LinkList;
void initlist(LinkList *L)
{
L=(LinkList *)malloc(sizeof(LinkList));
L->next=NULL;
}
void createlist(LinkList *L,int a[],int n)
{
LinkList *s,*r;int i;
L=(LinkList *)malloc(sizeof(LinkList));
r=L;
for(i=0;i<n;i++)
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=a[i];
r->next=s;
r=s;
}
r->next=NULL;
}
void mergelist_l(LinkList *la,LinkList *lb,LinkList *lc)
{
struct LONDE pa,pb,pc;
pa=la->next;
pb=lb->next;
lc=la;
pa=la;
while(pa && pa)
{
if(pa->data<=pb->data)
{
pc->next=pa;
pc=pa;
pa=pa->next;
}
else
{
pc->next=pb;
pc=pb;
pb=pb->next;
}
}
pc->next=pa?pa:pb;
free(lb);
}
void main()
{
int a[4]={1,3,4,5,6},b[3]={1,3,2,5};
LinkList *sp1;
LinkList *sp2;
LinkList *sp3;
initlist(sp1);
initlist(sp2);
initlist(sp3);
creatlist(sp1, a[0], 5);
creatlist(sp2, b[0], 4);
mergelist_l(&sp1,&sp2,&sp3);
}