三、写一个算法合并两个已排序的线性表。

(用两种方法:数组表示的线性表(顺序表)和

指针表示的线性表(链表)

)

要求:

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函数中,构建两个多项式,并测试相加和相乘运算。