数据结构顺序表的操作,窗口界面(c语言版)

// 准备头文件
#include <stdio.h>
#include <stdlib.h>#define InitSize 10     // 动态顺序表的初始默认长度// 定义C语言的bool变量
#define bool char
#define true 1
#define false 0/* 定义数据元素的数据类型 */
typedef int ElemType; // 方便更改// 动态顺序表的结构体定义
typedef struct Sqlist_d
{ElemType *data;int length;int maxsize;
}Sqlist_d;// 生成顺序表
Sqlist_d L2; 
// 动态顺序表的初始化
bool InitSqList_d(Sqlist_d *L)
{L->length = 0;L->maxsize = InitSize;// 为数据开辟空间L->data = (ElemType *)malloc(sizeof(ElemType) * InitSize);return true;
}// 动态顺序表的插入
bool SqList_dInsert(Sqlist_d *L,int i,ElemType e)
{// 判断操作是否合法if(i < 1 || i > L->length + 1){printf("插入位置不合法!\n");return false;}if(L->length >= L->maxsize){printf("这个表已经满了。\n");return false;}// 将第i位元素及其后面的元素向后移一位int j; // length的长度刚好是当前最大下标加一for(j = L->length;j >= i;j--){L->data[j] = L->data[j-1];}// 将新元素放到插入的位置L->data[i-1] = e;// 表长加1L->length++;// 插入成功返回truereturn true;
}// 将顺序表中第i位元素删除并把它返回给e
// 动态顺序表的元素删除
bool SqList_dElemDelete(Sqlist_d *L, int i, ElemType *e)
{// 判断合法性if(i < 1 || i > L->length){printf("删除位置不合法!\n");return false;}// 判空if(L->length == 0){printf("这个表是空的!\n");return false;}// 将删除元素赋值给e*e = L->data[i-1];// 将第i位元素之后的元素向前移动一位int j; // 此时i若作为下标就是删除元素后一位的下标for(j = i; j < L->length; j++){L->data[j-1] = L->data[j];}// 表长减一L->length--;return true;}// 动态顺序表的按值查找并返回其位序
int SqList_dLocElem(Sqlist_d L, ElemType e)
{int i;for(i = 0; i < L.length; i++){if(L.data[i] == e){return i + 1;}}return 0;
}// 动态顺序表的扩容
bool IncreaseSize(Sqlist_d *L, int len)
{// 生成一个新指针指向原来数据的空间ElemType *p = L->data;// 开辟更大的空间L->data = (ElemType *)malloc(sizeof(ElemType) * (L->length + len));// 转移数据int i;for(i = 0; i < L->length; i++){L->data[i] = p[i]; // p[i] === *p + i}// 修改最大长度L->maxsize += len;// 释放原来的空间free(p);return true;
}// 动态顺序表的输出
bool Sqlist_dprint(Sqlist_d L)
{// 判空if(L.length == 0){printf("这个顺序表为空!\n");return false;}// 输出printf("Sqlist_d;");int i;for(i = 0; i < L.length; i++){printf("%d-->", L.data[i]);}printf("end\n");return true;
}
// 按位取值
bool SqList_dLoc(Sqlist_d *L, int i)
{if (i >= 1 && i <= L -> length){printf("查找成功\n");printf("第%d位元素的信息是:%d\n", i, L -> data[i-1]);return true;}printf("查找失败!\n");return false;
}
void Begin(){printf("1.建立\n");printf("2.输入\n");printf("3.取值\n");printf("4.查找\n");printf("5.插入\n");printf("6.删除\n");printf("7.输出\n");printf("8.退出\n");int n;int flag = 1;while (flag){printf("请选择:");scanf("%d", &n);int m,m1;int d,d1,d2,d3;char s,j;switch (n){case 1:InitSqList_d(&L2);printf("成功建立顺序表!\n");break;case 2:printf("您希望输入几个元素:\n");scanf("%d", &m);printf("输入您的%d个元素,以创建顺序表。\n", m);int i;int s1;for(i = 0; i < m; i++){printf("请输入第%d个元素:", i+1);scanf("%d", &s1);SqList_dInsert(&L2, i+1, s1);}break;case 3:printf("请输入一个位置来取值:");scanf("%d", &d);SqList_dLoc(&L2, d);break;case 4:printf("请输入一个值来查找它的位置:");scanf("%d", &d1);printf("%d的位置是:%d\n",d1,SqList_dLocElem(L2, d1));break;case 5:printf("请输入要插入的位置:");scanf("%d", &d2);printf("请输入要插入的值:");scanf("%d", &m1);j = SqList_dInsert(&L2, d2, m1);if (j){printf("插入成功!\n");}break;case 6:printf("请输入你要删除的位置:");scanf("%d", &d3);ElemType c;s = SqList_dElemDelete(&L2, d3, &c);if (s){printf("删除成功!\n");} break;case 7:Sqlist_dprint(L2);break;case 8:flag = 0;}}}int main()
{Begin();return 0;
}

效果:

 代码供参考,若有错误希望指出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/748146.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sui move动态字段练习(5)- 总结与思考

引言 之前几篇文章&#xff0c;我们用sui move动态字段模拟solidity映射&#xff0c;实现了一个类似erc20的代币&#xff0c;这使我更加深刻地理解了sui move和solidity编程特性和编程思想的区别。下面是我的总结与思考。 总结 首先&#xff0c;sui与solidity的编程特性有很…

css 各种方位计算 - client系列 offset系列 scroll系列 x/y 系列

offset系列 HTMLElement.offsetTop - Web API 接口参考 | MDN 一文读懂offsetHeight/offsetLeft/offsetTop/offsetWidth/offsetParent_heightoffset-CSDN博客 client系列 搞清clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop-CSDN博客 scroll系列 秒懂scr…

2024年,如何使用chatgpt4.0为工作赋能?

ChatGPT 4.0的工作原理和功能 ChatGPT 4.0的工作原理和功能可以从以下几个方面进行详细说明&#xff1a; 工作原理 ChatGPT 4.0的工作原理主要基于深度学习技术&#xff0c;特别是Transformer模型的应用。它通过大量的文本数据进行训练&#xff0c;学习语言的模式和规律&…

Android 启动service(Kotlin)

一、使用startForegroundService()或startService&#xff08;&#xff09;启用service **Activity //启动service val intent: Intent Intent(ServiceActivitythis,MyService::class.java) //Build.VERSION_CODES.O 26 // Android8以后&#xff0c;不允许后台启动Service i…

波特图笔记

波特图相关知识 介绍波特图之前,首先要介绍放大电路的复频域分析的相关概念。 增益函数 放大器工作在小信号时,晶体管可以用线性模型近似。忽略温度等参数对元件的影响,认为放大器是一个线性是不变系统。输入信号和输出信号之间关系可以用线性常系数微分方程来进行描述。…

OpenOFDM接收端信号处理流程

Overview — OpenOFDM 1.0 documentation 本篇文章为学习OpenOFDM之后的产出PPT&#xff0c;仅供学习参考。 ​​​​​​​

vsto快速在excel中查找某个字符串

是的&#xff0c;使用foreach循环遍历 Excel.Range 可能会较慢&#xff0c;特别是在大型数据集上。为了提高效率&#xff0c;你可以考虑使用 Value 属性一次性获取整个范围的值&#xff0c;然后在内存中搜索文本。这样可以减少与 Excel 之间的交互次数&#xff0c;提高性能。 …

嵌入式3-15

1、整理思维导图 2、整理课上单向循环链表的代码 3、完成双向链表的剩下四个功能 2、 node_p create_list()//创建链表 { node_p p(node_p)malloc(sizeof(node)); if(pNULL) { printf("申请失败\n"); return NULL; } p->len…

使用VLC实现自动播放视频

VLC是一款开源的多媒体播放器&#xff0c;它支持大量的视频和音频格式&#xff0c;并且具有强大的脚本和编程接口。虽然VLC本身并没有内置的编程语言&#xff0c;但你可以通过其命令行接口或Lua脚本来实现自动化播放视频的功能。 以下是一个简单的示例&#xff0c;展示如何使用…

尼伽OLED透明屏闪耀第24届中国零售业博览会,引领零售行业革新

2024 CHINA SHOP 第二十四届中国零售业博览会 3.13-15 上海 3.13-15日&#xff0c;第24届中国零售业博览会盛大开幕&#xff0c;起立科技&#xff08;旗下品牌&#xff1a;起鸿、尼伽&#xff09;携其自主研发的30寸OLED透明屏和移动AI透明屏机器人惊艳亮相&#xff0c;成为展…

【PTA】L1-039 古风排版(C++)

题目链接&#xff1a;L1-039 古风排版 - 团体程序设计天梯赛-练习集 (pintia.cn) 目录&#xff1a; 目录&#xff1a; 题目要求&#xff1a; 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; 思路&#xff1a; 代码&#xff1a; 测试结…

Vulnhub - Jarbas

希望和各位大佬一起学习&#xff0c;如果文章内容有错请多多指正&#xff0c;谢谢&#xff01; 个人博客链接&#xff1a;CH4SER的个人BLOG – Welcome To Ch4sers Blog Jarbas 靶机下载地址&#xff1a;https://www.vulnhub.com/entry/jarbas-1,232/ 0x01 信息收集 Nmap…

C语言简单题(5)倍数问题、温度转换、输入半径得周长和面积

/* 判断输入的正整数既是5的倍数&#xff0c;又是7的倍数 */ #include<stdio.h> int main(){ int num; printf("请输入一个正整数&#xff1a;"); scanf("%d",&num); if(num%50 && num%70){ printf("…

10分钟用docker搭建【devops】

1.gitlab docker run -d --name gitlab --restartalways --network devops-network -p 8000:80 -p 443:443 -v C:/docker/gitlab/config:/etc/gitlab -v C:/docker/gitlab/logs:/var/log/gitlab -v C:/docker/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest运行完成记得…

Java Web项目—餐饮管理系统Day04-公共字段填充与菜品分类管理

文章目录 1. 公共字段填充菜品分类管理1. 搭建框架2. 编写功能2-1. 分页查询2-2 插入2-3 更新2-4 删除 1. 公共字段填充 前面我们已经完成了后台系统的员工管理功能开发&#xff0c;在新增员工时需要设置创建时间、创建人、修改时间、修改人等字段&#xff0c;在编辑员工时需要…

智慧工地管理平台APP源码基于物联网、云计算、大数据等技术

目录 ​系统特点 智慧工地云平台功能模块 1、基础数据管理 2、考勤管理 3、安全隐患管理 4、视频监控 5、塔吊监控 6、升降机监控 7、管理分析报表 8、移动端数据推送 9、数据接收管理 智慧工地管理平台系统基于物联网、云计算、大数据等技术&#xff0c;助力工地管理…

wsl ubuntu 安装cuda环境

wsl ubuntu 安装cuda环境: CUDA Toolkit 11.6 Downloads | NVIDIA DeveloperDownload CUDA Toolkit 11.6 for Linux and Windows operating systems.https://developer.nvidia.com/cuda-11-6-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=W…

前端工程化:提升开发效率的秘诀

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

安卓UI面试题 31-35

31. 简述 Paint类中主要绘制方法 ?1、图形绘制: setArgb(int a, int r, int g, int b):设置绘制的颜色,a表示透明度,r、g、b表示颜色值; setAlpha(int a):设置绘制的图形的透明度; setColor(int color):设置绘制的颜色; setAntiAlias(boolean a):设置是否使用抗锯齿…

Python Web开发记录 Day11:Django part5 管理员管理

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 1、创建管理员表2、管理员列表3、添加管理员①添…