首页 >> 知识 >> 头歌菜鸟入门第一关

头歌菜鸟入门第一关

编程要求: 根据提示,在右侧编辑器代码文件中的 Begin - End 区间内补充代码,实现 step1 / Seqlist.h 中的 Insert、Delete、DelValue 和 Find 四个操作函数,以实现线性表中数据的插入、删除与查找等功能。具体要求如下:

Insert 函数:在线性表位置 P 插入数据元素 x, 将X插入在位置 P(1≤P≤L.length + 1) 并返回 true。若空间已满,则打印 FULL 并返回false;如果参数 P 指向非法位置,则打印 ILLEGAL POSITION 并返回 false;

Delete 函数:删除线性表位置 P 处的数据元素,删除线性表第 P 个数据元素。将位置 P P(1≤P≤L.length) 的元素删除并返回 true。若参数 P 指向非法位置,则打印 POSITION P EMPTY(其中 P 是参数值)并返回 false。

Find 函数:查找线性表中第一个值为 x 的数据元素的位置,找到线性表中第一个值为 x 的数据元素所在下标。若找不到则返回 ERROR。

DelValue 函数:删除线性表中第一个值为 x 的数据元素: 删除第一个值为 x 的数据元素,返回该数据元素所在位置[1, L.length]。如果不存在值为 x 的数据元素,则打印“ FINDING ERROR X ”(其中 X 是参数值)则返回 ERROR。

输入输出格式请参见后续测试样例

注意:本关必读中提及的其他操作已经由平台实现,你在实现本关任务的四个操作函数时,在函数体内可调用其他操作。

注意:本关必读中提及的其他操作已经由平台实现,你在实现本关任务的四个操作函数时,在函数体内可调用其他操作。本关涉及的代码文件 Seqlist.h 中的 4 个操作函数的代码框架如下:/*返回线性表中X第一次出现的位置,从1开始。若找不到则返回ERROR;*/int Find(SqList L, ElementType X) { // 请在这里补充代码,完成本关任务 /********** Begin *********/ /********** End **********/}/*将X插入在位置P(1≤P≤L.length+1)并返回true。若空间已满,则打印“FULL”并返回false;如果参数P指向非法位置,则打印“ILLEGAL POSITION”并返回false;*/bool Insert(SqList& L, ElementType X, int P) { // 请在这里补充代码,完成本关任务 /********** Begin *********/ /********** End **********/}/*将位置P(1≤P≤L.length)的元素删除并返回true。若顺序表是空的,则打印“LIST EMPTY” ,并返回false;若参数P指向非法位置,则打印“POSITION P EMPTY”(其中P是参数值)并返回false。*/bool Delete(SqList& L, int P) { // 请在这里补充代码,完成本关任务 /********** Begin *********/ /********** End **********/}/* 删除线性表中第一个值为`x`的数据元素: 删除第一个值为`x`的数据元素,返回该数据元素所在位置`[1,L.length]`。如果不存在值为`x`的数据元素,则打印“FINDING ERROR X”(其中X是参数值)则返回`ERROR`。该操作函数具体定义如下: */int Deletevalsue(SqList& L, ElementType X) { // 请在这里补充代码,完成本关任务 /********** Begin *********/ /********** End **********/}测试说明本关的测试文件是 step1 / Main.cpp,负责对实现的代码进行测试以及必读中提及的其他操作。具体代码如下:/*顺序表的初始化,为动态数组分配一个预定义大小的空间,创建一个最多可存储`MAXSIZE`个数据元素的顺序存储的线性表并将表的当前长度设置为0(即length=0),如果申请存储空间失败返回false,否则返回true;*/bool MakeEmpty(SqList & L) { L.elem = new ElementType[MAXSIZE]; if (L.elem == NULL) return false; L.length = 0; return true;}/*释放线性表存储空间:释放`L.elem`所指向的用于存储线性表数据元素的存储空间。该操作函数具体定义如下: */void Free(SqList& L) { delete[]L.elem;}/* 判断线性表是否为空:若当前线性表是空表,则返回`true`,否则返回`false`。该操作函数具体定义如下*/ bool IsEmpty(SqList& L){ return 0 == L.length;}/* 判断线性表是否已满:若线性表达到最大长度,则返回 `true`,否则返回`false`。该操作函数具体定义如下:*/bool IsFull(SqList& L){ return L.length == MAXSIZE;}/* 打印线性表: 打印整个线性表。该操作函数具体定义如下:*/void Print(SqList& L) { int i; if (L.length >= 1) { cout
网站地图