
第3-4周练习题2020——1-1 顺序表操作集 (20分)
发布日期:2021-05-06 20:35:18
浏览次数:17
分类:技术文章
本文共 3059 字,大约阅读时间需要 10 分钟。
本题要求实现顺序表的操作集。
函数接口定义:
List MakeEmpty(); Position Find( List L, ElementType X );bool Insert( List L, ElementType X, Position P );bool Delete( List L, Position P );
其中List结构定义如下:
typedef int Position;typedef struct LNode *List;struct LNode { ElementType Data[MAXSIZE]; Position Last; /* 保存线性表中最后一个元素的位置 */};
各个操作函数的定义为:
List MakeEmpty():
创建并返回一个空的线性表; Position Find( List L, ElementType X )
:返回线性表中X的位置。若找不到则返回ERROR; bool Insert( List L, ElementType X, Position P )
:将X插入在位置P并返回true。若空间已满,则打印“FULL”并返回false;如果参数P指向非法位置,则打印“ILLEGAL POSITION”并返回false; bool Delete( List L, Position P )
:将位置P的元素删除并返回true。若参数P指向非法位置,则打印“POSITION P EMPTY”(其中P是参数值)并返回false。 裁判测试程序样例:
#include#include #define MAXSIZE 5#define ERROR -1typedef enum {false, true} bool;typedef int ElementType;typedef int Position;typedef struct LNode *List;struct LNode { ElementType Data[MAXSIZE]; Position Last; /* 保存线性表中最后一个元素的位置 */};List MakeEmpty(); Position Find( List L, ElementType X );bool Insert( List L, ElementType X, Position P );bool Delete( List L, Position P );int main(){ List L; ElementType X; Position P; int N; L = MakeEmpty(); scanf("%d", &N); while ( N-- ) { scanf("%d", &X); if ( Insert(L, X, 0)==false ) printf(" Insertion Error: %d is not in.\n", X); } scanf("%d", &N); while ( N-- ) { scanf("%d", &X); P = Find(L, X); if ( P == ERROR ) printf("Finding Error: %d is not in.\n", X); else printf("%d is at position %d.\n", X, P); } scanf("%d", &N); while ( N-- ) { scanf("%d", &P); if ( Delete(L, P)==false ) printf(" Deletion Error.\n"); if ( Insert(L, 0, P)==false ) printf(" Insertion Error: 0 is not in.\n"); } return 0;}/* 你的代码将被嵌在这里 */
输入样例:
61 2 3 4 5 636 5 12-1 6
输出样例:
FULL Insertion Error: 6 is not in.Finding Error: 6 is not in.5 is at position 0.1 is at position 4.POSITION -1 EMPTY Deletion Error.FULL Insertion Error: 0 is not in.POSITION 6 EMPTY Deletion Error.FULL Insertion Error: 0 is not in.
思路
要月考了,完善一下3-8周题目第二次做的失误
1.初始化L->Last=0;错误,应初始化等于-1;L->Last记录的是位置 2.第24行插入操作 3.此题无需考虑L->NULL情况if(P>MAXSIZE-1||P<0)
错误,顺序表插入也应该按顺序插,首尾之间不允许有空的元素,应改为if(P>L->Last+1||P<0)
代码List MakeEmpty(){ List L; L=(List)malloc(sizeof(struct LNode)); L->Last=-1; return L;}Position Find( List L, ElementType X ){ for(Position i=0;i<=L->Last;i++){ if(L->Data[i]==X){ return i;} }return ERROR;}bool Insert( List L, ElementType X, Position P ){ if(L->Last+1>=MAXSIZE){ printf("FULL"); return false; } if( P>(L->Last+1)||P<0){ printf("ILLEGAL POSITION"); return false; } for(Position i=L->Last;i>=P;i--) L->Data[i+1]=L->Data[i]; L->Data[P]=X; L->Last++; return true; }bool Delete( List L, Position P ){ if(P>L->Last||P<0){ printf("POSITION %d EMPTY",P); return false; } for(Position j=P;jLast;j++) L->Data[j]=L->Data[j+1]; L->Last--; return true;}
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年03月29日 03时31分27秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
编写测试用例的实用小技巧
2019-03-03
c语言贪吃蛇控制台版
2019-03-03
Windows10 下springboot应用无法被外部网络访问
2019-03-03
【树形dp】P1273 有线电视网
2019-03-03
【分层图最短路】P4568 [JLOI2011]飞行路线
2019-03-03
【最短路】P4408 [NOI2003]逃学的小孩
2019-03-03
2020C证(安全员)模拟考试题及C证(安全员)模拟考试系统
2019-03-03
2020电工(初级)考试及电工(初级)考试软件
2019-03-03
2020N1叉车司机模拟考试题库及N1叉车司机复审模拟考试
2019-03-03
2020年G3锅炉水处理报名考试及G3锅炉水处理考试申请表
2019-03-03
2020年制冷与空调设备运行操作答案解析及制冷与空调设备运行操作考试总结
2021-05-06
2020年保育员(初级)考试资料及保育员(初级)新版试题
2019-03-03
2020年茶艺师(高级)考试内容及茶艺师(高级)考试申请表
2019-03-03
2021年过氧化工艺试题及答案及过氧化工艺考试平台
2019-03-03
2021年重氮化工艺考试题库及重氮化工艺考试报名
2019-03-03
2021年车工(高级)考试总结及车工(高级)试题及答案
2019-03-03
2021年压力焊证考试及压力焊实操考试视频
2019-03-03
2021年低压电工考试及低压电工考试申请表
2019-03-03