升序排列用C实现
注释的部分是采用数组实现的,未注释的是采用链表实现的,可以将链表实现的注释起来和数组实现的运行做对比 #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(ihead=(struct Node*)malloc(sizeof(struct Node)); p=list->head; for(i=0;ivalue=a[i]; ...全部
注释的部分是采用数组实现的,未注释的是采用链表实现的,可以将链表实现的注释起来和数组实现的运行做对比 #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(ihead=(struct Node*)malloc(sizeof(struct Node)); p=list->head; for(i=0;ivalue=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->valuevalue) { 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];//=; int b[MAX_LEN];//=; 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 :
",alen); for(i=0;ivalue); p=p->next; } printf("
"); }。收起