C语言实现顺序表的基本操作,包括增删查操作以及顺序表的合并

SequentialList.h

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 30typedef int DataType;
//顺序表格式定义
typedef struct
{DataType Data[MAXSIZE];  //数据域,存放数据int last;       //记录最后顺序表一个元素下标,空表为-1
}SeqList;
//定义三个顺序表LA,LB,LC
SeqList LA,LB,LC;//判空
int IsEmpty(SeqList L);
//判满
int IsFull(SeqList L);//初始化顺序表
int InitSeqList(SeqList* L);//在下标i处插入数据
int InsList(SeqList* L,int i,int e);
//递增按序插入数据
int InsertList(SeqList* L,int e);//删除下标为i的元素
int DelList(SeqList* L,int i);
//删除数据e
int DeleteList(SeqList* L,int e);//查找并返回下标为i的元素
int GetData(SeqList L,int i);
//查找变量e并返回下标
int Locate(SeqList L,int e);//显示L所有数据
int Show(SeqList L);//合并有序顺序表LA,LB
int MergeList(SeqList* LA,SeqList* LB,SeqList* LC);//状态判断函数,判断并输出操作的运行状态
int State(int i);//对顺序表L进行操作
int Operation(SeqList* L);//主界面
int MainMenu();

SequentialList.c

#include <stdio.h>
#include <stdlib.h>
#include "SequentialList.h"//初始化顺序表
int InitSeqList(SeqList* L)
{//将顺序表last值赋为-1,将顺序表置为空表L->last = -1;return 0;
}//在下标i处插入数据
int InsList(SeqList* L,int i,int e)
{int j;if(IsFull(*L))return -1;      //表已满,无法插入if((i < 0)||(i > L->last + 1))return 0;       //插入位置i不合法if(i == L->last + 1){L->Data[i] = e;L->last++;return 1;        //插入成功返回1}else{for(j = L->last;j >= i; j--)L->Data[j+1] = L->Data[j];L->Data[i] = e;L->last++;return 1;        //插入成功返回1}
}//按递增顺序插入数据e
int InsertList(SeqList* L,int e)
{int i;if(IsEmpty(*L)){L->Data[0] = e;L->last++;return 1;     //插入成功返回1}else{for(i = 0;i <= L->last; i++ ){if(L->Data[i] > e)break;}return InsList(L,i,e);//在下标i处插入数据并返回其返回值}
}//删除下标为i的元素
int DelList(SeqList* L,int i)
{int j;if((i < 0)||(i > L->last))return 0;           //删除位置不合法返回0if(i < L->last)for(j = i;j < L->last; j++ )L->Data[j] = L->Data[j+1];L->last--;return 1;               //删除成功返回1
}//删除数据e
int DeleteList(SeqList* L,int e)
{int i = Locate(*L,e);if(i >= 0)return DelList(L,i);return -2;
}//返回下标为i的数据
int GetData(SeqList L,int i)
{if((i < 0)||(i > L.last))return 0;        //位置不合法返回0return L.Data[i];           //操作成功返回1
}//查找e返回下标
int Locate(SeqList L,int e)
{int i = 0;while((i <= L.last)&&(L.Data[i] != e))i++;if(i <= L.last)return i;  //找到位置则1return -1;         //未找到返回-2
}//判空
int IsEmpty(SeqList L)
{if(L.last == -1)return 1;  //表为空返回1return 0;
}//判满
int IsFull(SeqList L)
{if(L.last == MAXSIZE - 1)return 1;   //表已满返回1return 0;
}//显示顺序表中所有元素
int Show(SeqList L)
{int i;for(i = 0;i <= L.last; i++)printf("\t%d. %d\n",i,L.Data[i]);return 0;
}//状态判断函数,判断并输出操作的运行状态
int State(int i)
{if(i == -1)printf("\t顺序表已满\n");else if(i == 0)printf("\t输入位置不合法\n");else if(i == -2)printf("\t在顺序表中未找到该数据\n");else if(i == -3)printf("\t顺序表为空\n");elseprintf("\t操作成功\n");return 0;
}//对顺序表进行操作
int Operation(SeqList* L)
{int i,e,k,m;//i操作数,e增删查的数据,k要操作的位置while(1){system("cls");printf("\t1.按序插入数据e\n");printf("\t2.删除第k个数据\n");printf("\t3.删除数据e\n");printf("\t4.查找数据e\n");printf("\t5.显示所有数据\n");printf("\t0.返回主界面\n");scanf("%d",&i);switch(i){case 1:printf("请输入要插入的数据");scanf("%d",&e);State(InsertList(L,e));system("pause");break;case 2:printf("请输入要删除数据的位置");scanf("%d",&k);State(DelList(L,k-1));system("pause");break;case 3:printf("请输入要删除的数据");scanf("%d",&e);State(DeleteList(L,e));system("pause");break;case 4:printf("请输入要查找的数据");scanf("%d",&e);m =Locate(*L,e);if(m >= 0)printf("\n%d的下标为%d\n",e,m);system("pause");break;case 5:Show(*L);system("pause");break;case 0:return 0;break;default:break;}}
}//合并有序顺序表LA,LB
int MergeList(SeqList* LA,SeqList* LB,SeqList* LC)
{int i,j,k;i = j = k = 0;while((i <= LA->last)&&(j <= LB->last))if(LA->Data[i] < LB->Data[j]){LC->Data[k] = LA->Data[i];i++;k++;}else{LC->Data[k] = LB->Data[j];j++;k++;}while(i <= LA->last){LC->Data[k] = LA->Data[i];i++;k++;}while(j <= LB->last){LC->Data[k] = LB->Data[j];j++;k++;}LC->last = LA->last + LB->last + 1;return 0;
}//主界面
int MainMenu()
{int i;printf("\t1.对顺序表LA进行操作\n");printf("\t2.对顺序表LB进行操作\n");printf("\t3.合并顺序表LA和LB\n");printf("\t4.查看LC\n");printf("\t0.退出系统\n");scanf("%d",&i);switch(i){case 1:Operation(&LA);break;case 2:Operation(&LB);break;case 3:MergeList(&LA,&LB,&LC);break;case 4:Show(LC);break;case 0:exit(0);break;default:break;}system("pause");return 0;
}

main.c

#include <stdio.h>
#include <stdlib.h>
#include "SequentialList.h"int main()
{InitSeqList(&LA);InitSeqList(&LB);InitSeqList(&LC);while(1){system("cls");MainMenu();}return 0;
}

C语言实现顺序表基本操作相关推荐

  1. C语言实现顺序表(顺序存储结构)

    顺序表(顺序存储结构)及初始化过程详解 顺序表,全名顺序存储结构,是线性表的一种.通过<线性表>一节的学习我们知道,线性表用于存储逻辑关系为"一对一"的数据,顺序表自然 ...

  2. 【C语言】顺序表的创建

    一.代码实现部分: 1.顺序表是线性表的基础部分,至于顺序表,在本人看来无异于数组.至于线性表的概念,在此不再赘述.接下来尝试利用C语言对线性表中的顺序表进行代码实现(此程序中规定用户输入的数据类型为 ...

  3. 顺序表基本操作<小白一听就懂!!!><超详细><接地气>

    顺序表基本操作<小白一听就懂!!!><超详细>&&<接地气> ***小编前言*** 完整代码 // 头文件 //主函数 // 初始化 /*运用指针* ...

  4. 顺序表基本操作函数总结

    /*************************************************************************************/ /*   顺序表基本操作 ...

  5. 逆置单链表c语言程序,(数据结构C语言版)顺序表和单链表的逆置

    <(数据结构C语言版)顺序表和单链表的逆置>由会员分享,可在线阅读,更多相关<(数据结构C语言版)顺序表和单链表的逆置(7页珍藏版)>请在人人文库网上搜索. 1.实验1-1顺序 ...

  6. c语言实现顺序表源程序,C语言实现静态顺序表的实例详解

    C语言实现静态顺序表的实例详解 线性表 定义一张顺序表也就是在内存中开辟一段连续的存储空间,并给它一个名字进行标识.只有定义了一个顺序表,才能利用该顺序表存放数据元素,也才能对该顺序表进行各种操作. ...

  7. PTA第一章作业1--数据结构基本概念 顺序表基本操作

    6-2 顺序表基本操作 (10分) 本题要求实现顺序表元素的增.删.查找以及顺序表输出共4个基本操作函数.L是一个顺序表,函数Status ListInsert_Sq(SqList &L, i ...

  8. 数据结构线性表的逻辑结构(三)顺序表基本操作的实现

    一. 实验目的 1. 掌握线性表的逻辑结构: 2. 顺序表基本操作的实现: 3. 掌握利用C/C++编程语言实现数据结构的编程方法: 4. 通过上机时间加强利用数据结构解决实际应用问题的能力: 二.  ...

  9. 【PTA】6-1 顺序表基本操作(10 分)

    题目来自 网络与信息安全-数据结构作业1-数据结构基本概念 6-1 https://fancyking.ml/archives/71 原题描述 6-1 顺序表基本操作(10 分) 本题要求实现顺序表元 ...

  10. 6-2 顺序表基本操作 (10 分)

    6-2 顺序表基本操作 (10 分) 本题要求实现顺序表元素的增.删.查找以及顺序表输出共4个基本操作函数. L是一个顺序表, 函数Status ListInsert_Sq(SqList &L ...

最新文章

  1. 更新日志 - fir.im「高级统计」功能上线
  2. win8如何卸载mysql5.0_Win8如何卸载Windows的服务?卸载Windows的服务的方法和步骤
  3. 数据结构和算法一定要背算法的代码嘛_我们为什么要学习数据结构和算法?
  4. JIT编译器,内联和转义分析
  5. C#.net同步异步SOCKET通讯和多线程总结(转)
  6. 一文快速入门分库分表(必修课)
  7. python mkdir -p_Python中的mkdir -p功能[复制]
  8. 可重构计算芯片是未来吗?开发者如何抓住这一机会
  9. [转载] Python版简易计算器的实现
  10. php表决器代码,adder3 此源代码是基于Verilog语言的七人投票表决器 、2 个 联合开发网 - pudn.com...
  11. 测试中正交表软件,用正交表工具PICT自动设计测试用例
  12. matplotlib之pyplot模块——绘制对数线图(loglog()、semilogx()、semilogy())
  13. 摄影爱好者尝试图库销售时需要注意什么?| 拍者手记
  14. 《区块链底层设计Java实战》之第一章区块链简介
  15. Linux实操篇-组管理和权限管理
  16. zabbix基础·配置短信报警
  17. 苹果手机屏幕上的圆点怎么设置?(开启悬浮按钮)
  18. 加速度计、陀螺仪和姿态角
  19. 数字信号处理--加窗
  20. 乐视网被冻结价值9000万财产 要贾跃亭以FF股权抵偿债务

热门文章

  1. 将有道云词典单词本导入到墨墨背单词
  2. 经济学原理_宏观经济学,微观经济学合集 N.格里高利·曼昆PDF
  3. java excel 转 图片_Java中excel转换为jpg/png图片 采用aspose-cells-18.6.jar
  4. 浙江大学-西湖大学联合培养博士生
  5. 点分十进制ip地址转为十进制数字地址-python3实现
  6. Tomcat服务器端口修改,tomcat服务器配置端口 tomcat端口号修改操作步骤
  7. 如何mysql学籍管理系统_MySQL基础-学生管理系统数据库设计
  8. 23个热门python爬虫项目,爬虫仍需谨慎,牢饭不是很香!!!
  9. 工具介绍(3)- TS 视频文件分析工具神器
  10. nginx集群配置流程