在复习线性表的两个基本操作时自己的感悟, 记录,欢迎探讨
//
// main.cpp
// 2.1线性表插入删除操作的实验验证
//
// Created by 郭宸羽 on 24/5/2023.
//
#include <stdlib.h>
#include <stdio.h>
#define MAXSIZE 10
typedef int elemtype;
//1.结构体
typedef struct sql
{
int length;
int max_size;
elemtype data[MAXSIZE];
}sql;
//2.初始化
void InitialSql(sql &sql_0)
{
sql_0.length = 0;
sql_0.max_size =MAXSIZE;
for(int i = 0;i<MAXSIZE;i++)
{
sql_0.data[i] = 0;
}
}
//3.打印显示
void Display(sql sql_0)
{
for(int i = 0 ;i< sql_0.length;i++)
{
printf("%d ",sql_0.data[i]);
}
printf("\n");
}
//4.插入
bool Insert(sql &sql_0,int e,int seq)
{
int idx = seq - 1;//以数组索引为下标
if(idx<0||idx > sql_0.length)
return false;
if(sql_0.length >= MAXSIZE)
return false;
for(int i = sql_0.length; i>= idx+1 ;i++)//此处采用临界状态分析法
{
sql_0.data[i] = sql_0.data[i-1];
}
sql_0.data[idx]=e;
sql_0.length++;
return true;
}
//5.删除
bool Delete(sql &sql_0,int seq)
{
int idx = seq - 1;
if(idx < 0 || idx >sql_0.length-1)
{
return false;
}
else
{
for(int i =idx;i<= sql_0.length-2;i++)
{
sql_0.data[i] = sql_0.data[i+1];
}
sql_0.length--;
}
return true;
}
int main()
{
sql sql_1;
InitialSql(sql_1);
Display(sql_1);
for(int s=1;s<11;s++)
Insert(sql_1, s, s);
Display(sql_1);
for(int t = 0;t < 9;t++)
{
Delete(sql_1, 1);
Display(sql_1);
}
}