请教两道C语言程序!关于链表的:1用函数完成单向链表的建立、输入
关于链表的: 1用完成单向链表的建立、输入、插入和删除。其中每个结点有两个数据成员:姓名、年龄。在主函数中调用这些函数 2用函数生成两个有序整型数据链表,将他们合并成一个有序链表。
#include"std.h" #include"malloc.h" #define len sizeof(struct price) struct price {int num; int num2; struct price *next; }; struct price lista,listb; int n,sum=0; void main() {struct price *creat(void); struct price *insert(struct price *,struct price *); void print(struct price *); struct price * ahead,* bhead,* abh; printf("input list a:\n"); ahead=creat(); sum=sum+n; printf("input list b:\n"); bhead=creat(); sum=sum+n; abh=insert(ahead,bhead); print(abh); } struct price * creat(void) {struct price * p1,* p2,* head; n=0; p1=p2=(struct price *)malloc(len); printf("input number & price:\n"); printf("if number is 0,stop inputing.\n"); scanf("%d,%d",&p1->num,&p1->num2); head=NULL; while(p1->num!=0) {n=n+1; if(n==1) head=p1; else p2->next=p1; p2=p1; p1=(struct price *)malloc(len); scanf("%d,%d",&p1->num,&p1->num2); } p2->next=NULL; return(head); } struct price * insert(struct price * ah,struct price *bh) {struct price *pa1,*pa2,*pb1,*pb2; pa2=pa1=ah; pb2=pb1=bh; do {while((pb1->num>pa1->num)&&(pa1->next!=NULL)) {pa2=pa1; pa1=pa1->next; } if(pb1->num<=pa1->num) {if(ah==pa1) ah=pb1; else pa2->next=pb1; pb1=pb1->next; pb2->next=pa1; pa2=pb2; pb2=pb1; } }while((pa1->next!=NULL)||(pa1==NULL&&pb1!=NULL)); if((pb1!=NULL)&&(pb1->num>pa1->num)&&(pa1->next==NULL)) pa1->next=pb1; return(ah); } void print(struct price * head) {struct price * p; printf("\nThere are %d records: \n",sum); p=head; if(p!=NULL) do {printf("%d,%d\n",p->num,p->num2); p=p->next; }while(p!=NULL); } 两个程序差不多 改改东西就成了