问题
问答题
假设以带头结点的单链表表示有序表,单链表的类型定义如下: typedef struct node{ int data; struct node*next; }LinkNode,*LinkList; 编写算法,输入n个整数构造一个元素值互不相同的递增有序链表(即相同的整数只取一 个)。算法的函数原型给定为 LinkList f 34(int n);
答案
参考答案:
解析:LinkList f 34(int n) { LinkList L,P,q,s; int e,i; L=(LinkList)malloe(sizeof(LinkNode)); L—>next=NULL; for(i=1;i<=n;i++){ seanf("%d",&e); p=L; q=p—>next; while(q&&q—>data<e){ p=q; q=q—>next; } if(!q||q—>data>e){ s=(LinkList)malloc(sizeof(LinkNode)); s—>data=e; s—>next=q; p—>next=s; } } return L; }