目录
用顺序存储的方式实现线性表顺序存储。把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系又存储的邻接关系体现。
注:“静态”这里指空间的大小固定。

注:每个相邻的元素所占的空间大小相同。
- #include
- #include
-
- #define MAXSIZE 10
-
- typedef int ElemType;
-
- typedef struct {
- ElemType data[MAXSIZE];
- int length;
- }SqList;
- //顺序表的初始化
- void InitSqList(SqList&L){
- for(int i=0;i
- L.data[i]=0;
- }
- L.length=0;
- }
(2)顺序表的判空和判满
- //操作清单
- void MenuSqList(){
- printf("-------------1.插入操作-------------\n");
- printf("-------------2.定位插入操作---------\n");
- printf("-------------3.查找操作-------------\n");
- printf("-------------4.定位删除操作---------\n");
- printf("-------------5.按值删除元素---------\n");
- printf("-------------6.删除整个顺序表-------\n");
- printf("-------------7.打印操作-------------\n");
- printf("-------------8.结束操作-------------\n");
- }
-
- //判断顺序表是否空
- bool IsEmpty (SqList L){
- if(L.length<=0){
- return true;
- }else {
- return false;
- }
- }
- //判断顺序表是否为满
- bool IsFull(SqList L){
- if(L.length>=MAXSIZE){
- return true;
- }else{
- return false;
- }
- }
(3)顺序表的后插操作和定位插入元素
- //顺序表的插入操作
- void ListInsert(SqList&L,ElemType e) {
- if(IsFull(L)){
- printf("顺序表已满!\n");
- return ;
- }
- L.data[L.length]=e;
- L.length++;
- }
- //定位向顺序表中插入数据
- void ListInsertLocate(SqList&L,int i,ElemType e){
- if(i<0||i>L.length+1){
- printf("输入的插入元素位置不合法\n");
- return ;
- }
- if(L.length>=MAXSIZE){
- printf("存储空间已满!\n");
- return ;
- }
- for(int j=L.length;j>=i;j--){
- L.data[j]=L.data[j-1];
- }
- L.data[i-1]=e;
- L.length++;
- }
(4)顺序表元素的定位删除操作和按值删除操作
- //定位删除操作
- void DeleteElemType(SqList&L,int i,ElemType&e){
- if(i<0||i>L.length+1){
- printf("输入的插入元素位置不合法\n");
- return ;
- }
- e=L.data[i-1];
- for(int j=i-1;j
- L.data[j]=L.data[j+1];
- }
- L.length--;
- }
- //顺序表按值删除(删除第一个元素为e的值)
- void DeleteElem(SqList&L,ElemType&e) {
- int index=0;
- for(int i=0;i
- if(L.data[i]==e){
- index=i;
- break;
- }
- }
- for(int j=index;j
- L.data[j]=L.data[j+1];
- }
- L.length--;
- }
(5)删除表和打印操作
- //删除顺序表
- void DeleteSqList(SqList&L){
- for(int i=0;i
- L.data[i]=0;
- }
- L.length=0;
- }
-
- //顺序表的打印操作
- void PrintSqList(SqList L){
- for(int i=0;i
- printf("%d\t",L.data[i]);
- }
- printf("\n");
- }
(6)主函数
- int main() {
- SqList L;
- //对顺序表进行初始化
- InitSqList(L);
- //对顺序表进行插入操作
- ElemType x;
- int flag=-1;
- //各种操作
- while(1) {
- int i=0;
- ElemType e=0;
- MenuSqList();
- printf("请输入操作: ");
- scanf("%d",&flag);
- switch(flag){
- case 1:
- printf("请输入元素(-1_end): ");
- scanf("%d",&x);
- while(x!=-1) {
- ListInsert(L,x);
- printf("请输入元素(-1_end): ");
- scanf("%d",&x);
- }
- break;
- case 2:
- printf("请输入元素插入位置: \n");
- scanf("%d",&i);
- printf("请输入元素: ");
- scanf("%d",&x);
- ListInsertLocate(L,i,x);
- break;
- case 3:
- printf("请输入查找元素位置: ");
- scanf("%d",&i);
- if(i<0||i>=L.length+1){
- printf("输入的查找元素位置不合法!\n");
- break;
- }
- printf("Elem = %d\n",L.data[i-1]);
-
- break;
- case 4:
- printf("请输入删除的定位位置: ");
- scanf("%d",&i);
- DeleteElemType(L,i,e);
- printf("删除成功元素=%d\n",e);
- break;
- case 5:
- printf("请输入要删除的元素: ");
- scanf("%d",&e);
- DeleteElem(L,e);
- break;
- case 6:
- DeleteSqList(L);
- printf("删除成功!\n");
- break;
- case 7:
- PrintSqList(L);
- break;
- default:
- printf("结束操作\n");
- }
- if(flag==8){
- break;
- }
- }
- return 0;
- }
(7)测试用例





-
相关阅读:
计算机毕业设计Javavue架构云餐厅美食订餐系统(源码+系统+mysql数据库+lw文档)
[附源码]计算机毕业设计疫苗药品批量扫码识别追溯系统Springboot程序
shell编写循环检查脚本
潼南柠檬产业发展大会举行 这三个场景“柠”聚了人气
你在犹豫吗?--疫情换工作后记
SpringBoot中“@SpringBootApplication“自动配置原理《第七课》
计算机基础:今天一次把 Unicode 和 UTF-8 说清楚
Codeforces Round 895 (Div. 3) A-F
力扣240.搜索二维矩阵II
Android10.0 锁屏分析-KeyguardPatternView图案锁分析
-
原文地址:https://blog.csdn.net/Keep_Trying_Go/article/details/126197611