分类：电脑/网络-程序设计-C/C++
问题：请教两道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);}两个程序差不多 改改东西就成了