数据结构与算法-第二章线性表课后习题-课本第53页2.2
题目:将两个非递减的有序链表合并为一个非递增的有序链表。
要求结果链表仍使用原来两个链表的存储空间,不另外占用其他的存储空间。表中允许有重复的数据。
/*数据结构与算法-第二章线性表课后习题
*题目:将两个非递减的有序链表合并为一个非递增的有序链表。
* 要求结果链表仍使用原来两个链表的存储空间,不另外占用其他的存储空间。
* 表中允许有重复的数据。
*编译环境:VC 6.0
*/
typedef struct listnode
{
int data;
struct listnode *next;
}listnode,*link;
typedef struct
{
link head;
int len;
}Sqlist;
void initList(Sqlist &list)
{
list.head=(link)malloc(sizeof(listnode));
list.len=0;
list.head->next=NULL;
}
int ListInsert(Sqlist &list,int i,int num)
{
link p,q;
int j=0;
q=list.head;
while(q && j<i-1)
{
q=q->next;
j++;
}
if(!q || j>i-1)return ERROR;
p=(link)malloc(sizeof(listnode));
p->data=num;
p->next=q->next;
q->next=p;
list.len++;
return OK;
}
void printList(Sqlist &list)
{
link p=list.head->next;
while(p)
{
printf("%d,",p->data);
p=p->next;
}
printf("\n");
}
void mergeList(Sqlist &la,Sqlist &lb,Sqlist &lc)
{
l