4-2 顺序表操作集 (20分)
来源:互联网 发布:js判断json对象和数组 编辑:程序博客网 时间:2024/06/05 14:58
4-2 顺序表操作集 (20分)
本题要求实现顺序表的操作集。
函数接口定义:
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 <stdio.h>#include <stdlib.h>#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.
点击访问 PAT-测验
#include <stdio.h>#include <stdlib.h>/*时间 结果 得分 题目 编译器 用时(ms) 内存(MB) 用户2016-02-06 18:03 答案正确 20 4-2 gcc 1 1 569985011测试点结果测试点 结果 得分/满分 用时(ms) 内存(MB)测试点1 答案正确 12/12 1 1测试点2 答案正确 4/4 1 1测试点3 答案正确 4/4 1 1*/#define MAXSIZE 5#define ERROR -1//typedef enum BOOL{false, true} bool;typedef int ElementType;typedef int Position;typedef struct LNode *List;struct LNode { ElementType Data[MAXSIZE]; Position Last; /* 保存线性表中最后一个元素的位置 */};List MakeEmpty(){List a=(List)malloc(sizeof(struct LNode));a->Last=0;return a;} Position Find( List L, ElementType X ){ if(!L)return ERROR; for(int 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)return false; if(L->Last==MAXSIZE){ printf("FULL");return false; } if(P<0||P>L->Last){ printf("ILLEGAL POSITION");return false; } for(int i=L->Last;i>P;i--){ L->Data[i]=L->Data[i-1]; }L->Data[P]=X; ++L->Last; return true;}bool Delete( List L, Position P ){ if(!L)return false; if(P>=L->Last||P<0){ printf("POSITION %d EMPTY",P);return false; } --L->Last; for(int i=P;i<L->Last;i++){ L->Data[i]=L->Data[i+1]; } return true;}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;}/* 你的代码将被嵌在这里 */
0 0
- 4-2 顺序表操作集 (20分)
- 4-2 顺序表操作集 (20分)
- 4-2 顺序表操作集 (20分)
- 4-2 顺序表操作集 (20分)
- 4-2 顺序表操作集 (20分)
- 4-2 顺序表操作集 (20分) PTA
- PTA数据结构与算法题目集(中文)4-2 顺序表操作集 (20分)
- 4-2 顺序表操作集
- 4-2 顺序表操作集
- PTA 顺序表基本操作(10 分)
- PTA 6-1 顺序表基本操作(10 分)
- 4-5 链式表操作集 (20分)
- 4-5 链式表操作集 (20分)
- 4-5 链式表操作集 (20分)
- 4-5 链式表操作集 (20分) PTA
- 顺序表操作集
- 顺序表操作集
- 顺序表操作集
- B-tree, Binary Tree, B+Tree, B*-Tree 的概念对比
- how to make custom table cell
- 4-1 单链表逆转 (20分)
- Notes: Process in Operation System and Dead Lock 操作系统中的进程和死锁问题
- rem自适应布局-移动端自适应必备
- 4-2 顺序表操作集 (20分)
- LeetCode 237. Delete Node in a Linked List
- 4-3 求链式表的表长
- 安装auto-fu.zsh让命令输入自动补全
- 4-4 链式表的按序号查找 (10分)
- 4-5 链式表操作集 (20分)
- 第13章 文件读写的相关要点记录--二进制与文本文件
- Data Quality Services
- NYOJ 1058.部分和问题(深搜)