假设有两个按元素值非递减次序排列的线性表,均以单链表形式存储。请编写算法将这两个单链表归并为一个按元素值非递增次序排列的单链表,并要求利用原来两个单链表的结点存放归并后的单链表。
void MergeListe (LinkList &La, LinkList &Lb, LinkList &Lc) { pa=La->next; pb=Lb->next; Lc=La; Lc->next=NULL; while (pa &&pb) { if (pa->data
data) //将pa插入在LC的后面,作为第一个节点( 头插法) { r=pa->next; pa->next=Lc->next; Lc->next=pa; pa=r; } else //将pb插入在LC的后面,作为第一个节点( 头插法) { r=pb->next; pb->next=Lc->next; Lc->next=pb; pb=r; } }//while while (pa) { r=pa->next; //La未完,将余下结点顺次头插到Lc表中 pa->next=Lc->next; Lc->next=pa; pa=r; } while(pb) { r=pb->next; //Lb未完,将余下结点顺次头插到Lc表中 pb->next=Lc->next; Lc->next=pb; pb=r; } free (Lb); }
举一反三
- 假设有两个按元素值非递减次序排列的线性表,均以单链表形式存储。请编写算法将这两个...用原来两个单链表的结点存放归并后的单链表
- 1.假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算...;free(pb);returnOK;}
- 1.假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序,允许表中含有值相同的元素)排列的线性表C,并要求利用原表(即A表和B表)的结点空间构造C表。
- 有一个单链表,其结点的元素值以非递减有序排列,编写一个函数删除该单链表中多余的元素值相同的结点。
- 设ha和hb分别是两个带表头结点的非递减有序单链表的表头指针,试设计一个算法,将这两个有序链表合并成一个非递增有序的单链表。要求结果链表仍使用原来两个链表的存储空间,不另外占用其它的存储空间。表中允许有重复的数据。
内容
- 0
有一个由整数元素构成的非空单链表A,设计一个算法,将其拆分成两个单链表A和B,使得A单链表中含有所有的偶数节点,B单链表中含有所有的奇数节点,且保持原来的相对次序
- 1
设ha和hb分别是两个带头结点的递增有序单链表。设计一个算法,将这两个有序链表的所有数据结点合并成一个递增有序的单链表hc,要求hc单链表仍使用原来两个链表的存储空间,不另外占用其他的存储空间,ha和hb两个表中允许有重复的数据结点。
- 2
如果线性表最常用的操作时读取第i个元素的值,则采用______存储方式最高效。 A: 顺序表 B: 带表头结点的单链表 C: 单链表 D: 双向链表
- 3
若线性表最常用的运算是存取第i个元素及其前驱元素值,则采用(<br/>)存储方式节省时间。 A: 单链表 B: 双链表 C: 循环单链表 D: 顺序表
- 4
对于双向链表,在两个结点之间插入一个新结点需修改的指针共(__)个,单链表为 (__)个。