资源描述:
《数据结构代码应用举例》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、附录习题答案2.2.3顺序表的应用举例#defineMAX100/*定义表长不超过100*/typedefstructnode{intdata[MAX];intlenth;}LIST;/*lenth变量存放的是表的实际长度,表中的元素存在数组data中,并且从下标1的单元开始存放。*/#includevoidmerge_list(LISTla,LISTlb,LIST*lc)/*两个有序表合并*/{inti,j,k;i=j=k=1;while(i<=la.lenth&&j<=lb.lent
2、h)if(la.data[i]<=lb.data[j]){lc->data[k]=la.data[i];k++;i++;}else{lc->data[k]=lb.data[j];k++;j++;}while(i<=la.lenth){lc->data[k]=la.data[i];k++;i++;}while(j<=lb.lenth){lc->data[k]=lb.data[j];k++;j++;}lc->lenth=k-1;return;}Voidmain(){LISTla,lb,lc;inti,k,m;
3、printf("请输入la顺序表元素,元素为整型量,用空格分开,-99为结束标志:");la.lenth=0;scanf("%d",&i);while(i!=-99)/*输入la顺序表元素,建立有序表*/{k=la.lenth;while((k>=1)&&(i=k+1;m--)la.data[m+1]=la.data[m];la.data[k+1]=i;la.lenth++;scanf("%d",&i);}printf("请输入l
4、b顺序表元素,元素为整型量,用空格分开,-99为结束标志:");lb.lenth=0;scanf("%d",&i);while(i!=-99)/*输入lb顺序表元素,建立有序表*/{k=lb.lenth;while((k>=1)&&(i=k+1;m--)lb.data[m+1]=lb.data[m];lb.data[k+1]=i;lb.lenth++;53附录习题答案scanf("%d",&i);}printf("la有序表元素列表:
5、");for(i=1;i<=la.lenth;i++)printf("%4d",la.data[i]);printf("");printf("lb有序表元素列表:");for(i=1;i<=lb.lenth;i++)printf("%4d",lb.data[i]);printf("");merge_list(la,lb,&lc);printf("lc有序表元素列表:");for(i=1;i<=lc.lenth;i++)printf("%4d",lc.data[i]);printf(""
6、);}2.3.5单链表应用举例#include#includetypedefstructpnode{intcoef;/*系数以整型为例*/intexp;/*指数*/structpnode*next;/*指针*/}PNODE;PNODE*creat_link(intn){/*顺序输入n个元素的值,建立带表头结点的单链表*/PNODE*head,*p,*s;inti;head=(PNODE*)malloc(sizeof(PNODE));/*head为表头指针*/head-
7、>next=NULL;/*先建立一个带表头结点的空表*/p=head;printf("entercoef,exp:");for(i=1;i<=n;i++){s=(PNODE*)malloc(sizeof(PNODE));/*生成新结点*/scanf("%d,%d",&s->coef,&s->exp);/*输入结点的系数和指数*/s->next=NULL;p->next=s;p=s;/*新结点插入表尾*/}return(head);}voidpadd(PNODE*pa,PNODE*pb){/*以pa和p
8、b为头指针的单链表分别表示两个多项式,实现pa=pa+pb*/PNODE*pre,*qa,*q,*qb;intsum;pre=pa;/*pre始终指向当前和多项式的最后一个结点*/53附录习题答案qa=pa->next;qb=pb->next;/*qa、qb分别指向pa、pb中的当前结点*/while(qa&&qb){/*qa、qb均非空*/if(qa->exp==qb->exp){/*指数相同*/sum=qa->coef+q