线性表算法题库_数据结构与算法(线性表)练习题

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

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

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

)

要求:

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

函数中,构建两个多项式,并测试相加和相乘运算。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值