数据结构作业系统 第二章答案

发布 2022-07-14 17:47:28 阅读 1949

◆2.11② 设顺序表l中的数据元素递增有序。

试写一算法,将x插入到l的适当位置上,并保。

持该表的有序性。

要求实现下列函数:

void insertorderlist(sqlist &l, elemtype x)

* 在有序的顺序表 l 中保序插入数据元素 x */

顺序表类型定义如下:

typedef -

2.11② 设顺序表l中的数据元素递增有序。

试写一算法,将x插入到l的适当位置上,并保。

持该表的有序性。

要求实现下列函数:

void insertorderlist(sqlist &l, elemtype x)

* 在有序的顺序表 l 中保序插入数据元素 x */

顺序表类型定义如下:

typedef struct

2.12③ 设a=(a1,…,am)和b=(b1,…,bn)均为有序顺序表,a'和b'分别为a和b中除去最大共同前缀后的子表(例如,a=(x,y,y,z,x,z),b=(x,y,y,z,y,x,x,z),则两者中最大。

的共同前缀为(x,y,y,z), 在两表中除去最大共同前缀后。

的子表分别为a'=(x,z)和b'=(y,x,x,z))。若a'=b'=空表,则a=b;若a'=空表,而b'≠ 空表,或者两者均不为空表,且a'的首元小于b'的首元,则ab。试写一个比。

较a和b大小的算法。(注意:在算法中,不要破坏原表a

和b,也不一定先求得a'和b'才进行比较)。

要求实现下列函数:

char compare(sqlist a, sqlist b);

* 比较顺序表a和b, *

* 返回'<'若a若a=b; *

', 若a>b */

顺序表类型定义如下:

typedef struct

return p;

2.14② 试写一算法在带头结点的单链表结构上实现线性表。

操作length(l)。

实现下列函数:

int length(linklist l);

/ return the length of the linked list

/ whose head node is pointed by 'l'

单链表类型定义如下:

typedef struct lnode

return i;

2.17② 试写一算法,在无头结点的动态单链表上实现。

线性表操作insert(l,i,b),并和在带头结点的动态单。

链表上实现相同操作的算法进行比较。

实现下列函数:

void insert(linklist &l, int i, elemtype b);

单链表类型定义如下:

typedef struct lnode

if(i!=0&&i!=1)

if(i==1)

2.18② 同2.17题要求。试写一算法,实现线性表操作delete(l,i)。

实现下列函数:

void delete(linklist &l, int i);

单链表类型定义如下:

typedef struct lnode{

elemtype data;

struct lnode *next;

lnode, *linklist;

void delete(linklist &l, int i)

linklist p,q;

int j=2;

数据结构第二章作业题

1 已知一个顺序表中的元素按元素值非递减有序排列,编写一个算法删除表中多余的值相同的元素。顺序表的定义如下 typedef structsqlist 函数头定义如下 status desame sq sqlist l 2 编写一个函数,将一个顺序表la 有n个元素,且任何元素均不为0 分拆成两个表,...

数据结构作业第2章

第2章线性表。1.填空。在顺序表中,等概率情况下,插入和删除一个元素平均需移动 个元素,具体移动元素的个数与 和 有关。顺序表中第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的存储地址是 设单链表中指针p 指向结点a,若要删除a的后继结点 假设a存在后继结点 则需修改指针的操作为 单...

数据结构作业第3章

第3章栈 队列。1.填空 1 设有一个空栈,栈顶指针为1000h,现有输入序列为 经过push,push,pop,push,pop,push,push后,输出序列是 栈顶指针为 2 栈通常采用的两种存储结构是 其判定栈空的条件分别是 判定栈满的条件分别是 3 可作为实现递归函数调用的一种数据结构。4...