c语言创建空顺序表的程序,C语言实现顺序表的创建与增删改查操作
SqListDemo.c
/* 线性表的顺序存储实现 */
#include
#include
#include
// 定义符号常量
#define LIST_INIT_SIZE 50
#define LISTINCREMENT 10
#define OK 1
#define ERROR 0
#define OVERFLOW -2
// 定义元素类型
typedef int ElemType;
// 定义顺序表类型
typedef struct {
ElemType *elem; // 顺序表元素
int length; // 顺序表长度
int listsize; // 顺序表存储容量
} SqList;
// 构造空顺序表
int InitList(SqList *L)
{
// 获取顺序表基址
L->elem = (ElemType *) malloc(sizeof(ElemType));
// 存储空间分配失败
if (!L->elem) return ERROR;
// 空表长度为0
L->length = 0;
// 分配给空表的存储容量
L->listsize = LIST_INIT_SIZE;
// 初始化成功
return OK;
}
// 获取顺序表第i个元素
ElemType GetListElem(SqList *L, int i)
{
// 检查i的合法性
if (i < 1 || i > L->length)
return ERROR;
else
return L->elem[i-1];
}
// 定位目标元素在顺序表中位置
int LocateListElem(SqList *L, ElemType e)
{
int i = 1;
// 定义指针p,指向第一个元素
ElemType *p = L->elem;
// 目标元素依次与顺序表元素比较
while (*p != e && i <= L->length)
{
i++;
p++;
}
if (i > L->length)
return 0;
else
return i;
}
// 在顺序表第i个位置插入元素
int InsertListElem(SqList *L, int i, ElemType e)
{
int k;
// 位置合法性判断
if (i < 1 || i > L->length + 1) return ERROR;
// 顺序表空间满,按增量重新分配
if (L->length >= L->listsize)
{
// 增加LISTINCREMENT个元素元素,获取顺序表新基址
L->elem = (ElemType *)realloc(L->elem, (L->listsize + LISTINCREMENT) * sizeof(ElemType));
if (!L->elem) return ERROR;
// 按增量修改存储空间大小
L->listsize += LISTINCREMENT;
}
// 元素后移1位
for (k = L->length - 1; k >= i - 1; k--)
L->elem[k + 1] = L->elem[k];
// 插入元素
L->elem[i-1] = e;
// 顺序表长度加1
L->length++;
// 插入成功
return OK;
}
// 删除顺序表第i个元素
int DeleteListElem(SqList *L, int i)
{
int k;
// 判断位置合法性
if (i < 1 || i >L->length) return ERROR;
// 元素前移1位
for (k = i; k <= L->length; k++)
L->elem[k-1] = L->elem[k];
// 顺序表长度减1
L->length--;
// 删除成功
return OK;
}
// 修改顺序表第i个元素
int UpdateListElem(SqList *L, int i, ElemType e)
{
// 判断位置合法性
if (i < 1 || i >L->length) return ERROR;
// 修改第i个元素值
L->elem[i-1] = e;
// 修改成功
return OK;
}
// 输出顺序表全部元素
void PrintList(SqList *L)
{
int i;
if (L->length == 0)
printf("\n顺序表为空!\n\n");
else
for (i = 1; i <= L->length; i++)
printf("%d ", L->elem[i-1]);
printf("\n");
}
int main()
{
int i, choice, position;
ElemType data, elem;
int isRunning = 1;
SqList *pl = (SqList *)malloc(sizeof(SqList));
while(isRunning)
{
printf("======顺序表操作演示=======\n");
printf("1. 创建一个空的顺序表\n");
printf("2. 输出顺序表的全部数据\n");
printf("3. 查询顺序表某个位置的数据\n");
printf("4. 查询数据在顺序表中的位置\n");
printf("5. 向顺序表指定位置插入数据\n");
printf("6. 删除顺序表指定位置的数据\n");
printf("7. 更新顺序表指定位置的数据\n");
printf("8. 退出顺序表操作演示程序\n");
printf("===========================\n");
printf("\n输入1-8,选择所需功能号:");
scanf("%d", &choice);
printf("\n您选择的功能号为:%d\n", choice);
switch(choice)
{
case 1:
if (InitList(pl))
printf("\n顺序表创建成功!\n\n");
else
printf("\n顺序表创建失败!\n\n");
system("pause");
break;
case 2:
PrintList(pl);
system("pause");
break;
case 3:
printf("i=");
scanf("%d", &i);
elem = GetListElem(pl, i);
if (elem)
printf("L[%d]=%d\n\n", i, elem);
else
printf("输入的位置不合法!");
system("pause");
break;
case 4:
printf("data=");
scanf("%d", &data);
position = LocateListElem(pl, data);
if (position)
printf("%d is at [%d] of the list.\n\n", data, position);
else
printf("%d is not in the list.\n\n", data);
system("pause");
break;
case 5:
printf("i,data=");
scanf("%d,%d", &i, &data);
if (InsertListElem(pl, i, data))
printf("\n数据插入成功!\n\n");
else
printf("\n数据插入失败!\n\n");
system("pause");
break;
case 6:
printf("i=");
scanf("%d", &i);
if (DeleteListElem(pl, i))
printf("\n数据删除成功!\n\n");
else
printf("\n数据删除失败!\n\n");
system("pause");
break;
case 7:
printf("i,data=");
scanf("%d,%d", &i, &data);
if (UpdateListElem(pl, i, data))
printf("\n数据更新成功!\n\n");
else
printf("\n数据更新失败!\n\n");
system("pause");
break;
case 8:
isRunning = 0;
break;
}
}
printf("\n谢谢使用本程序~");
return 0;
}
运行结果如下:
======顺序表操作演示=======
1. 创建一个空的顺序表
2. 输出顺序表的全部数据
3. 查询顺序表某个位置的数据
4. 查询数据在顺序表中的位置
5. 向顺序表指定位置插入数据
6. 删除顺序表指定位置的数据
7. 更新顺序表指定位置的数据
8. 退出顺序表操作演示程序
===========================
输入1-8,选择所需功能号:1
您选择的功能号为:1
顺序表创建成功!
请按任意键继续. . .
======顺序表操作演示=======
1. 创建一个空的顺序表
2. 输出顺序表的全部数据
3. 查询顺序表某个位置的数据
4. 查询数据在顺序表中的位置
5. 向顺序表指定位置插入数据
6. 删除顺序表指定位置的数据
7. 更新顺序表指定位置的数据
8. 退出顺序表操作演示程序
===========================
输入1-8,选择所需功能号:5
您选择的功能号为:5
i,data=1,100
数据插入成功!
请按任意键继续. . .
======顺序表操作演示=======
1. 创建一个空的顺序表
2. 输出顺序表的全部数据
3. 查询顺序表某个位置的数据
4. 查询数据在顺序表中的位置
5. 向顺序表指定位置插入数据
6. 删除顺序表指定位置的数据
7. 更新顺序表指定位置的数据
8. 退出顺序表操作演示程序
===========================
输入1-8,选择所需功能号:5
您选择的功能号为:5
i,data=2,300
数据插入成功!
请按任意键继续. . .
======顺序表操作演示=======
1. 创建一个空的顺序表
2. 输出顺序表的全部数据
3. 查询顺序表某个位置的数据
4. 查询数据在顺序表中的位置
5. 向顺序表指定位置插入数据
6. 删除顺序表指定位置的数据
7. 更新顺序表指定位置的数据
8. 退出顺序表操作演示程序
===========================
输入1-8,选择所需功能号:5
您选择的功能号为:5
i,data=2,250
数据插入成功!
请按任意键继续. . .
======顺序表操作演示=======
1. 创建一个空的顺序表
2. 输出顺序表的全部数据
3. 查询顺序表某个位置的数据
4. 查询数据在顺序表中的位置
5. 向顺序表指定位置插入数据
6. 删除顺序表指定位置的数据
7. 更新顺序表指定位置的数据
8. 退出顺序表操作演示程序
===========================
输入1-8,选择所需功能号:5
您选择的功能号为:5
i,data=2,140
数据插入成功!
请按任意键继续. . .
======顺序表操作演示=======
1. 创建一个空的顺序表
2. 输出顺序表的全部数据
3. 查询顺序表某个位置的数据
4. 查询数据在顺序表中的位置
5. 向顺序表指定位置插入数据
6. 删除顺序表指定位置的数据
7. 更新顺序表指定位置的数据
8. 退出顺序表操作演示程序
===========================
输入1-8,选择所需功能号:2
您选择的功能号为:2
100 140 250 300
请按任意键继续. . .
======顺序表操作演示=======
1. 创建一个空的顺序表
2. 输出顺序表的全部数据
3. 查询顺序表某个位置的数据
4. 查询数据在顺序表中的位置
5. 向顺序表指定位置插入数据
6. 删除顺序表指定位置的数据
7. 更新顺序表指定位置的数据
8. 退出顺序表操作演示程序
===========================
输入1-8,选择所需功能号:3
您选择的功能号为:3
i=3
L[3]=250
请按任意键继续. . .
======顺序表操作演示=======
1. 创建一个空的顺序表
2. 输出顺序表的全部数据
3. 查询顺序表某个位置的数据
4. 查询数据在顺序表中的位置
5. 向顺序表指定位置插入数据
6. 删除顺序表指定位置的数据
7. 更新顺序表指定位置的数据
8. 退出顺序表操作演示程序
===========================
输入1-8,选择所需功能号:4
您选择的功能号为:4
data=250
250 is at [3] of the list.
请按任意键继续. . .
======顺序表操作演示=======
1. 创建一个空的顺序表
2. 输出顺序表的全部数据
3. 查询顺序表某个位置的数据
4. 查询数据在顺序表中的位置
5. 向顺序表指定位置插入数据
6. 删除顺序表指定位置的数据
7. 更新顺序表指定位置的数据
8. 退出顺序表操作演示程序
===========================
输入1-8,选择所需功能号:4
您选择的功能号为:4
data=1000
1000 is not in the list.
请按任意键继续. . .
======顺序表操作演示=======
1. 创建一个空的顺序表
2. 输出顺序表的全部数据
3. 查询顺序表某个位置的数据
4. 查询数据在顺序表中的位置
5. 向顺序表指定位置插入数据
6. 删除顺序表指定位置的数据
7. 更新顺序表指定位置的数据
8. 退出顺序表操作演示程序
===========================
输入1-8,选择所需功能号:6
您选择的功能号为:6
i=3
数据删除成功!
请按任意键继续. . .
======顺序表操作演示=======
1. 创建一个空的顺序表
2. 输出顺序表的全部数据
3. 查询顺序表某个位置的数据
4. 查询数据在顺序表中的位置
5. 向顺序表指定位置插入数据
6. 删除顺序表指定位置的数据
7. 更新顺序表指定位置的数据
8. 退出顺序表操作演示程序
===========================
输入1-8,选择所需功能号:2
您选择的功能号为:2
100 140 300
请按任意键继续. . .
======顺序表操作演示=======
1. 创建一个空的顺序表
2. 输出顺序表的全部数据
3. 查询顺序表某个位置的数据
4. 查询数据在顺序表中的位置
5. 向顺序表指定位置插入数据
6. 删除顺序表指定位置的数据
7. 更新顺序表指定位置的数据
8. 退出顺序表操作演示程序
===========================
输入1-8,选择所需功能号:7
您选择的功能号为:7
i,data=2,1000
数据更新成功!
请按任意键继续. . .
======顺序表操作演示=======
1. 创建一个空的顺序表
2. 输出顺序表的全部数据
3. 查询顺序表某个位置的数据
4. 查询数据在顺序表中的位置
5. 向顺序表指定位置插入数据
6. 删除顺序表指定位置的数据
7. 更新顺序表指定位置的数据
8. 退出顺序表操作演示程序
===========================
输入1-8,选择所需功能号:2
您选择的功能号为:2
100 1000 300
请按任意键继续. . .
======顺序表操作演示=======
1. 创建一个空的顺序表
2. 输出顺序表的全部数据
3. 查询顺序表某个位置的数据
4. 查询数据在顺序表中的位置
5. 向顺序表指定位置插入数据
6. 删除顺序表指定位置的数据
7. 更新顺序表指定位置的数据
8. 退出顺序表操作演示程序
===========================
输入1-8,选择所需功能号:8
您选择的功能号为:8
谢谢使用本程序~
c语言创建空顺序表的程序,C语言实现顺序表的创建与增删改查操作相关推荐
- C案例:创建顺序表并进行增删改查操作
一.顺序表概述 顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素.使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中 ...
- Database之SQL:自定义创建数据库的各种表demo集合(以方便理解和分析sql的各种增删改查语法的具体用法)
Database之SQL:自定义创建数据库的各种表demo集合(以方便理解和分析sql的各种增删改查语法的具体用法) 目录 自定义创建数据库的各种表demo集合 具体案例 1.学生信息数据表案例
- Java程序-单链表增删改查(实现对水浒人物的增删改查操作)
单链表增删改查(实现对水浒人物的增删改查操作) 前言 一.链表(Linked List)介绍 二.应用实例 1.问题描述 2.代码实现 总结 前言 参考:B站,尚硅谷数据结构与算法 课程 一.链表(L ...
- Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作
Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作,单表查询,多表查询 一丶表与表之间的关系 背景: 由于如果只使用一张表存储所有的数据,就会操作数 ...
- 数据库表的增删改查操作
目录 准备工作 一.增加操作 1.全列插入 2.多行插入 3.指定列插入 二.查询操作 1.全列查询和指定列查询 2.对查询的字段起别名,查询的字段为表达式 3.对于查询结果进行去重 4.对查询的结果 ...
- SAP abap内表分类与增删改查操作
SAP abap内表分类与增删改查操作 1.内表的分类 1.1.标准表 (standard table ) 系统为该表每一行生成一个院级索引.填表是可以将数据附加在现有行之后,也可以插入到指定的位置, ...
- 实现对mysql增删改查_Java语言实现对MySql数据库中数据的增删改查操作的代码
简单说操作的步骤: 1.连接数据库 2.将SQL语句发送到数据库 3.执行SQL语句 这里举个例子: 在一个数据库中有个students表,表中有学号(Id),姓名(Name),性别(Sex),地址( ...
- 爬虫使用mysql创建新数据库并进行增删改查操作
前言: 本文参考:Python3使用mysql创建新数据库并进行增删改查操作https://blog.csdn.net/Anwel/article/details/79919646 该文章描述了爬虫爬 ...
- 数据库多表的增删改查操作
数据库多表的增删改查操作: 增加操作(一对多)--- 一对多形式的表的建立: models.py: from django.db import models # Create your models ...
- Mysql —— C语言链接mysql数据库,用户 角色 权限(用户根据角色的不同拥有增删改查的权限、用户有三种认证方式)
db_修改过(用户 角色 权限): 1.新增用户时候id 改为最大id值加一,之前用的select查看出来的记录数加一,删除后再增加会出错: 2.删除用户时候,若该用户创建过其他用户(不能改此用户名. ...
最新文章
- SUBSTRING函數用法
- 树莓派~ubuntu开机自启动
- redis cluster集群选主
- SharePonit 2010 更改另存为列表模板的语言类型
- 调出sharepoint错误的详细页面
- PolarDB for PostgreSQL 开源路线图
- Reveal.js:把你的 Markdown 文稿变成 PPT
- mysql Proxy 的使用测试-2
- html5访问电脑或手机摄像头
- 苹果要做第一个吃螃蟹的人!将率先尝试台积电5nm工艺
- rrpp协议如何修改_RRPP协议做为高级网络工程师不能不懂的技术带你快速学习
- python输出unicode字符_如何在Python中打印Unicode字符?
- Permute3 mac最新多种媒体视频格式转换工具
- 《遥感基础导论》知识图——第五章 微波遥感数据
- amd支持服务器内存,AMD专用内存和普通内存的区别是什么?
- 深入浅出 CSS 动画
- 以太网交换机如何工作以及MAC和PHY
- 火狐3本月17日发布 与IE 8设计理念完全不同
- 【线性代数】二、向量组和方程组
- 有属性的自定义注解,如何获取到post请求中RequestBody中对象的一个属性值?
热门文章
- 关于tp-link wr740 v4的刷机救砖的办法(非线刷解决)恢复原版的
- 战地4稳定的服务器,战地4 游戏服务器
- 尽信书则不如无书、尽信标准则不如无标准(也谈JM8.6代码中的手误)
- 浮点运算单元(FPU)是什么?
- c语言地震子波6,地震子波显示及合成地震记录
- C语言采药动态规划,Vijos P1104 采药 动态规划
- Android计算器(计算表达式,能计算小数点以及括号)方法简单易懂
- 11.编写COM常用IDL指令和注意事项详解
- 这类注解都不知道,还好意思说用过Spring Boot?
- 高学历就意味着高薪资?低学历转行3D建模,游戏建模成为首选