例题:假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序,允许表中含有值相同的元素)排列的线性表C,并要求利用原表(即A表和B表)的结点空间构造C表。
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
typedef struct Node
{
int data;//保存数据
struct Node *next;//保存下一个节点的地址
}Node,*List;//List ==Node*
void InitList(List plist)
{
assert(plist != NULL);
if(plist == NULL)
{
return ;
}
//plist->data // 不使用
plist->next = NULL;
}
//头插
bool Insert_head(List plist,int val)//O(1)
{
Node *p = (Node *)malloc(sizeof(Node));
p->data = val;
p->next = plist->next;
plist->next = p;
return true;
}
//尾插
bool Insert_tail(List plist,int val)//O(n)
{
Node *p = (Node *)malloc(sizeof(Node));
p->data = val;
Node *q;
for(q=plist;q->next!=N