三、写一个算法合并两个已排序的线性表。
(用两种方法:数组表示的线性表(顺序表)和
指针表示的线性表(链表)
)
要求:
1、定义线性表节点的结构,并定义节点的型和位置的型。
2、定义线性表的基本操作
3、在1,2的基础上,完成本题。
4、在main函数中进行测试:先构建两个有序的线性表,然后合并这两个线性表。
四、已知一个单向链表,试给出复制该链表的算法。
要求:1、定义线性表的节点的结构以及节点的型和位置的型。
2、定义线性表的基本操作
3、在1,2的基础上,完成本题。
4、在main函数中进行测试:先构建一个线性表,并定义一个空线性表,然后进行复制。
五、写出从一个带表头的单链表中删除其值等于给定值x的结点的算法函数:int delete(LIST &L, int x);如果x在该链表中,则删除对应结点,并返回其在链表中的位置(逻辑位置,第一个结点的逻辑位置为1),否则返回-1。要求:1、定义线性表的节点的结构以及节点的型和位置的型。2、定义线性表的基本操作3、在1,2的基础上,完成本题。4、在main函数中进行测试:先构建一个线性表,然后调用函数删除值等于给定值的节点。
六、写出一个将两个静态链表(属于同一个存储池)合并的算法函数:
void Merge(cursor M, cursor N);合并的方法是将N链表中的所有结点添加到M链表的后面,并将N链表的表头结点添加到空闲结点链表中。
要求:1、定义静态链表的结点的结构以及结点的型SPACE以及位置(position)和游标(cursor)的型。
2、定义静态链表的基本操作:void Initialize();初始化,将所有存储池中的结点设置为空闲;cursor GetNode();从空闲链中获取一个结点;void FreeNode(cursor q);将结点q加入到空闲链;void Insert ( elementtype x, position p, cursor M );在链表M中的位置为p的元素后面添加一个值为x的结点;void Delete (cursor M,
position p );在链表M中删除位置为p的元素的后一个元素。
3、在1、2的基础上完成本题。
4、在main函数中进行测试:先构建一个存储池,然后在该存储池中创建两个静态表,最后将这两个静态表合并。
七、利用指针表示的线性表(链表)表示一个多项式,并实现两个多项式的相加和相乘运算。
假设多项式形式为:
1
1
1
1
...
)
(
e
e
m
e
m
x
a
x
a
t
a
x
A
m
m
其中,系数
a
i
≠0
,指数
e
i
满足
e
m
>e
m-1
>…>e
2>e
1>=0。
要求:
1、定义多项式每一项的结构。
2、定义两个多项式的相加和相乘运算函数。
3、在main函数中,构建两个多项式,并测试相加和相乘运算。