4-6 带头结点的链式表操作集
来源:互联网 发布:date php 格式化 编辑:程序博客网 时间:2024/05/29 16:35
4-6 带头结点的链式表操作集 (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 struct LNode *PtrToLNode;struct LNode { ElementType Data; PtrToLNode Next;};typedef PtrToLNode Position;typedef PtrToLNode List;
各个操作函数的定义为:
List MakeEmpty() :创建并返回一个空的线性表;
Position Find( List L, ElementType X ) :返回线性表中X的位置。若找不到则返回ERROR;
bool Insert( List L, ElementType X, Position P ) :将X插入在位置P指向的结点之前,返回true。如果参数P指向非法位置,则打印“Wrong Position for Insertion”,返回false;
_ bool Delete( List L, Position P )_ :将位置P的元素删除并返回true。若参数P指向非法位置,则打印“Wrong Position for Deletion”并返回false。
裁判测试程序样例:
#include <stdio.h>#include <stdlib.h>#define ERROR NULLtypedef enum {false, true} bool;typedef int ElementType;typedef struct LNode *PtrToLNode;struct LNode { ElementType Data; PtrToLNode Next;};typedef PtrToLNode Position;typedef PtrToLNode List;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; bool flag; L = MakeEmpty(); scanf("%d", &N); while ( N-- ) { scanf("%d", &X); flag = Insert(L, X, L->Next); if ( flag==false ) printf("Wrong Answer\n"); } 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 { flag = Delete(L, P); printf("%d is found and deleted.\n", X); if ( flag==false ) printf("Wrong Answer.\n"); } } flag = Insert(L, X, NULL); if ( flag==false ) printf("Wrong Answer\n"); else printf("%d is inserted as the last element.\n", X); P = (Position)malloc(sizeof(struct LNode)); flag = Insert(L, X, P); if ( flag==true ) printf("Wrong Answer\n"); flag = Delete(L, P); if ( flag==true ) printf("Wrong Answer\n"); for ( P=L->Next; P; P = P->Next ) printf("%d ", P->Data); return 0;}/* 你的代码将被嵌在这里 */
输入样例:
612 2 4 87 10 242 12 87 5
输出样例:
2 is found and deleted.12 is found and deleted.87 is found and deleted.Finding Error: 5 is not in.5 is inserted as the last element.Wrong Position for InsertionWrong Position for Deletion10 4 2 5
点击访问 PTA-测验
/* 你的代码将被嵌在这里 */List MakeEmpty()//:创建并返回一个空的线性表;{List a=(List)malloc(sizeof(struct LNode));a->Data=0;a->Next=NULL;return a;}Position Find( List L, ElementType X )//:返回线性表中X的位置。若找不到则返回ERROR;{List F=L;while(F){ if(F->Data==X)break; F=F->Next;}return F;}bool Insert( List L, ElementType X, Position P )//:将X插入在位置P指向的结点之前,返回true。如果参数P指向非法位置,则打印“Wrong Position for Insertion”,返回false;{ List F=L;while(F->Next){ if(F->Next==P)break; F=F->Next;}if(F->Next!=P){printf("Wrong Position for Insertion\n");return false;}F->Next=(List)malloc(sizeof(struct LNode));F->Next->Data=X;F->Next->Next=P;return true;}bool Delete( List L, Position P )//:将位置P的元素删除并返回true。若参数P指向非法位置,则打印“Wrong Position for Deletion”并返回false。{List F=L;if(!P){ printf("Wrong Position for Deletion\n");return false;}while(F->Next){ if(F->Next==P)break; F=F->Next;}if(F->Next!=P){ printf("Wrong Position for Deletion\n");return false;}F->Next=P->Next;return true;}
0 0
- 4-6 带头结点的链式表操作集
- 4-6 带头结点的链式表操作集
- 带头结点的链式表操作集
- 带头结点的链式表操作集
- 带头结点的链式表操作集
- 4-6 带头结点的链式表操作集 (20分)
- 4-6 带头结点的链式表操作集 (20分)
- 6-6 带头结点的链式表操作集(20 point(s))
- PTA数据结构与算法题目集(中文)4-6 带头结点的链式表操作集 (20分)
- 数据结构及算法——带头结点的链式表操作集(C语言)
- 带头结点的线性表的链式实现
- 带头结点的链表基本操作
- 带头结点的链表的创建与操作
- 带头结点的线性链表的基本操作
- 带头结点的循环链表基本操作
- 不带头结点的链表操作及其逆置
- 带头结点的链表
- 带头结点的链表
- Struts2的深入理解与使用(一)
- 机器学习(周志华)习题解答1.4: 两个算法到底孰优孰劣?没有免费午餐定理
- 4-12 二叉搜索树的操作集
- JavaScript趣题:成双成对的括弧
- 背景属性、文本属性、表格属性、边框属性
- 4-6 带头结点的链式表操作集
- 4-7 在一个数组中实现两个堆栈 (20分)
- 程序猿之路--Android基础
- 4-8 求二叉树高度 (20分)
- 数值字节与范围
- 4-9 二叉树的遍历 (25分)
- 4-10 二分查找 (20分)
- AndroidN SurfaceView新特性
- 4-11 先序输出叶结点 (15分)