首页 > 试题广场 >

假设有两个按元素递增有序排列的线性表 A 和 B, 均以带头

[问答题]
假设有两个按元素递增有序排列的线性表 A 和 B, 均以带头结点的链表作为存储结
构,编写算法,将 A 表和 B 表归并成一个按元素递减有序排列的线性表 C,并要求利
用原表(A 表和 B 表)的结点空间存放表 C。

解:
struct LNode
{  datatype data;
Struct Lnode *next;
}
Void  merge_down(LinkList &la, LinkList &lb, LinkList &lc)
{
pa=la­>next;
pb=lb­>next;
pc=la;
lc­>next=NULL;
free(lb) ;
while(pa !=NULL)&&(pb !=NULL)
if pa­>data< pb­>data
{ q=pa­>next;
pa­>next=lc­>next;
lc­>next=pa;
pa=q;
}
else
{  q=pb­>next;
pb­>next=lc­>next;
lc­>next=pb;
pb=q;
}
if pb==NULL
pb=pa;
while (pb!=NULL)
{  q=pb­>next;
pb­>next=lc­>next;
lc­>next=pb;
pb=q;
}
}
发表于 2017-05-14 22:28:06 回复(0)