#include
#include #define MAXSIZE 5
#define ERROR -1typedef 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_s("%d", &N);
while (N--) {
scanf_s("%d", &X);
if (Insert(L, X, 0) == false)
printf(" Insertion Error: %d is not in.\n", X);
}
scanf_s("%d", &N);
while (N--) {
scanf_s("%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_s("%d", &N);
while (N--) {
scanf_s("%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;
}// 创建并返回一个空的线性表;
List MakeEmpty()
{
List L;
L = (List)malloc(sizeof(struct LNode));
L->Last = -1;
return L;
}// 按顺序查找元素X的位置,找不到返回ERROR
Position Find(List L, ElementType X)
{
for (int i = 0;
i <= L->Last;
i++)
{
if (L->Data[i] == X)
return i;
}
return ERROR;
}//将X插入在位置P并返回true。若空间已满,则打印“FULL”并返回false;
//如果参数P指向非法位置,则打印“ILLEGAL POSITION”并返回false
bool Insert(List L, ElementType X, Position P)
{
if (L->Last == MAXSIZE-1)
{
printf("FULL");
return false;
} if (P<0 || P>L->Last + 1)
{
printf("ILLEGAL POSITION");
return false;
}
for (int k = L->Last + 1;
k > P;
k--)
{
L->Data[k] = L->Data[k - 1];
}
L->Data[P] = X;
L->Last++;
return true;
}//将位置P的元素删除并返回true。若参数P指向非法位置,
//则打印“POSITION P EMPTY”(其中P是参数值)并返回false。
bool Delete(List L, Position P)
{
if (P<0 || P>L->Last)
{
printf("POSITION %d EMPTY",P);
return false;
}
for (int i = P;
i < L->Last - 1;
i++)
L->Data[i] = L->Data[i + 1];
L->Last--;
return true;
}
【C++ 线性表的基本操作】
推荐阅读
- 人工智能|干货!人体姿态估计与运动预测
- 分析COMP122 The Caesar Cipher
- 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)
- C语言学习(bit)|16.C语言进阶——深度剖析数据在内存中的存储
- Python机器学习基础与进阶|Python机器学习--集成学习算法--XGBoost算法
- 数据结构与算法|【算法】力扣第 266场周赛
- 数据结构和算法|LeetCode 的正确使用方式
- leetcode|今天开始记录自己的力扣之路
- 人工智能|【机器学习】深度盘点(详细介绍 Python 中的 7 种交叉验证方法!)
- 网络|简单聊聊压缩网络