c语言创建一个顺序表主函数,用C语言来创建一个顺序表(数据结构部分)

顺序表的创建需要用到结构体,构造一个结构体来存储数据,顺序表申请的内存是连续的。创建顺序表的思路按照数据的“增删改查来进行编写”下列是顺序表的创建代码

创建头文件:

sqlist.h

#ifndef SQLIST_H

#define SQLIST_H

#define N 100

#define ming 1119

#define shu 1120

typedef int T;

typedef struct sqlist{

T data[N];//定义一个整形数组来存储数据

int size;//定义一个变量来记录数据的个数

}sqlist,*sqlink;

sqlink create_sqlist();//1.创建顺序表

sqlink insert_by_pos(sqlink sq,T dt,int index);//2.在任意位置插入

void traval(sqlink sq);//3.遍历函数(也就是将顺序表中的数据打印出来的函数)

void destroy_sqlist(sqlink sq);//5销毁链表

sqlink insert_by_tail(sqlink sq,T dt);//4.在尾部插入

T search_by_pos(sqlink sq,int index);//7.按位置查找

T search_by_value(sqlink sq,T dt);//8.按数值查找

void delete_by_pos(sqlink sq,int index);//9.按位置删除

void delect_by_value(sqlink sq,T dt);//10.按数值删除

sqlink change_by_pos(sqlink sq,T dt,int index);//11.按位置修改

sqlink change_by_value(sqlink sq,T dt1,T dt);//12.按数值修改,把相同的改了

#endif

下面的是功能函数

sqlist.c

#include#include “sqlist.h”

#include

//1.创建顺序表

sqlink create_sqlist()

{

sqlink sq=(sqlink)malloc(sizeof(sqlist));//sq为结构体类型指针用来存结构体结构体

if(sq)//如果分配成功

{

sq->size=0; //初始化元素的个数为0

}

return sq;

}

//2.在任意位置插入(思路是将数组的元素往后移动,从后往前移动)

sqlink insert_by_pos(sqlink sq,T dt,int index)

{

int i=0;

if(sq)//判断顺序表是否存在,存在则进行操作

{

if(index<0||index>sq->size)//非法插入位置,不插入

{

printf("index is out of the range\n");

}

else

{

for(i=sq->size;i>index;i--)

{

sq->data[i]=sq->data[i-1];

}

sq->data[index]=dt;

(sq->size)++;//插入一个数之后个数要加一

}

}

else//顺序表不存在就会打印sq为空

{

printf("sq is null\n");

}

return sq;

}

//3.遍历函数(将结构体里面的数组存储的数据打印出来)

void traval(sqlink sq)

{

int i=0;

if(sq)

{

for(i=0;isize;i++)

printf("%d “,sq->data[i]);

}

else

{

printf(“sq is null\n”);

}

printf(”\n");

}

//4.在尾部插入

sqlink insert_by_tail(sqlink sq,T dt)

{

if(sq)

{

sq->data[(sq->size)++]=dt;

}

else

{

printf("sq is null\n");

}

return sq;

}

//5销毁链表

void destroy_sqlist(sqlink sq)

{

if(sq)

{

free(sq);

}

}

//7.按位置查找(index是数组的下标,size则是个数,所以index的范围是0~size-1,index大于size-1和小于零的数是不存在的,也就是非法位置)

T search_by_pos(sqlink sq,int index)

{

if(sq)

{

if(index<0||index>sq->size-1)

{

printf(“index is out of the range\n”);

return -ming;

}

else{

return sq->data[index];

}

}

else

{

printf("sq is null\n");

return -shu;

}

}

//8.按数值查找(将相同的数据找出来)

T search_by_value(sqlink sq,T dt)

{

int i=0;

if(sq)

{

for(i=0;isize;i++)

{

while(sq->data[i]==dt)

{

printf(“i=%d “,i);

break;

}

}

printf(”\n”);

}

else

{

printf("sq is null\n");

return -shu;

}

return ming;

}

//9.按位置删除

void delete_by_pos(sqlink sq,int index)

{

int i=0;

if(sq)

{

for(i=index;isize;i++)

{

sq->data[i]=sq->data[i+1];

}

(sq->size)–;//删除之后个数要减去1

}

else

{

printf("sq is null\n");

}

}

//10.按数值删除(删除所有与要删除数字相同的数字)

void delect_by_value(sqlink sq,T dt)

{

int i=0;

if(sq)

{

for(i=0;isize;i++)

{

while(sq->data[i]==dt)

{

printf("i=%d ",i);

delete_by_pos(sq,i);//查找到数据之后把位置记录下来,按位置进行

break;

}

}

}

else

{

printf(“sq is null\n”);

}

}

//11.按位置修改

sqlink change_by_pos(sqlink sq,T dt,int index)

{

if(sq)

{

if(index<0||index>sq->size-1)

{

printf(“index is out of range\n”);

}

else

{

sq->data[index]=dt;

}

}

else

{

printf("sq is null\n");

}

return sq;

}

//12.按数值修改,把相同的改了

sqlink change_by_value(sqlink sq,T dt1,T dt)

{

int i=0;

if(sq)

{

for(i=0;isize;i++)

{

while(sq->data[i]==dt)

{

sq->data[i]=dt1;

break;

}

}

}

else

{

printf("sq is null\n");

}

}

主函数

main.c

#include#include “sqlist.h”

int main()

{

sqlink sq =create_sqlist();

insert_by_pos(sq,1,0);

insert_by_pos(sq,2,0);

insert_by_pos(sq,3,0);

insert_by_pos(sq,4,0);

insert_by_tail(sq,2);

insert_by_tail(sq,3);

insert_by_tail(sq,4);

traval(sq);

//printf("data=%d",search_by_pos(sq,2));

//search_by_value(sq,4);

//delete_by_pos(sq,0);

//delect_by_value(sq,4);

//printf("\n");

//change_by_pos(sq,520,2);

change_by_value(sq,520,4);//把所有的4改成520

traval(sq);

destroy_sqlist(sq);

return 0;

}

主函数这里只是调用了一些函数的功能而已,下面给大家附上图片

910bdace7a854d42a8d453c2f856e8f1.jpg前面的1,2,3,4是用了头插()的方式,所以顺序是反的,后面的2,3,4是尾插法。

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

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

相关文章

XSS常见攻击与防御

本文获得作者授权刊发&#xff0c;更多信息请关注作者专栏。 XSS攻击全称跨站脚本攻击&#xff0c;是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆&#xff0c;故将跨站脚本攻击缩写为XSS&#xff0c;XSS是一种在web应用中的计算机安全漏洞&#xff0c;它允许恶意…

关于c语言的符号常量以下叙述中正确的是,关于C语言的符号常量,以下叙述中正确的是( )...

关于对起的是下列械布重机置的正确认识。标准运用征税国家公布&#xff0c;符号治权征的家凭借政力开税收是国。常量包括专利权的程序授予。现左膝关痛节肿&#xff0c;下叙化验快R增&#xff0c;性A阴&#xff0c;女性&#xff0c;能的最可诊断是&#xff0c;多发口腔溃疡年来…

创业公司的容器化之路

作者简介&#xff1a; 章烨明&#xff0c;杏仁医生CTO。中年程序员&#xff0c;关注各种技术和团队管理。本文首发杏仁医生技术站 1. 创业公司的技术挑战 托尔斯泰说&#xff1a;“幸福的家庭都是相同的&#xff0c;不幸的家庭各有各的不幸。”互联网创业公司也一样。大部分互…

周围剃光头顶留长发型_发型改变气质,这话放在石原里美身上也通用啊

上周&#xff0c;石原里美的新剧《天国餐馆》开播啦。你们有在追吗&#xff1f;她新剧里的发型争议还蛮大。她在剧里演一个法国餐厅老板黑须假名子&#xff0c;非常多这种大背头造型。很多网友觉得不适合她&#xff0c;有点老气。▼这个大背头发型也是角色需要啦&#xff0c;是…

ServiceComb中的数据最终一致性方案

本文由华为微服务引擎技术团队&&ServiceComb社区授权发布。 数据一致性是构建业务系统需要考虑的重要问题 &#xff0c; 以往我们是依靠数据库来保证数据的一致性。但是在微服务架构以及分布式环境下实现数据一致性是一个很有挑战的的问题。ServiceComb作为开源的微服务…

laydate点击输入框闪一下不见了_爱剪辑:如何制作抖音、苹果风格的快闪视频...

不知道大家有没有看过iPhone的宣传片&#xff0c;视频开头有几十秒的快闪字幕&#xff0c;当时视频一出来就有很多剪刀手求教程&#xff0c;因为这个效果不仅酷炫&#xff0c;用途还很广&#xff0c;可以用于&#xff1a;日常生活介绍、产品介绍、搞笑段子......今天就来教大家…

C++和Lua交互教程(基于LuaBridge)

作者&#xff1a;查志旺 &#xff0c;向日葵远程控制软件前端开发工程师。 最近公司需要做向日葵远程控制软件跨平台项目&#xff0c;为了代码的可复用性&#xff0c;需嵌入跨平台脚本语言&#xff0c;我们选择了Lua&#xff0c;理由是Lua由标准C编写而成&#xff0c;几乎在所有…

与Serverless 的第一次亲密接触

Servrless概念 Serverless 是一个架构上的概念&#xff0c;从字面上理解就是无服务器架构。Serverless最初是用于描述依赖第三方服务实现对逻辑和状态进行管理的应用&#xff0c;典型的例子是单页 Web 和移动 App 这种富客户端应用&#xff0c;他们一般都使用基于云端的数据库…

eclipse把tomcant用到一个项目里_聊一个镜头工艺里容易被忽略,但很重要的项目...

在不改换门庭的情况下&#xff0c;一颗镜头一般都会伴随大家使用很长一段时间&#xff0c;也相信大多数人都遇到过剐蹭镜头前组的情况&#xff0c;这时候最容易引发的担忧就是“伤着镀膜了么&#xff1f;会不会影响成像效果&#xff1f;”其实换个角度来看&#xff0c;这个问题…

华为手机怎么看图片属性_华为手机怎么才能息屏显示时间?操作方法很简单,看完涨知识了...

现如今大家几乎都是手机不离身&#xff0c;甚至有些朋友机不离手。所以已经比较少人&#xff0c;会因为看时间而佩戴手表了&#xff0c;毕竟只要按下电源键就可以看时间了。其实现在的很多手机&#xff0c;不用亮屏也能看时间&#xff0c;下面我们就一起来看看是如何设置的吧。…

开源神器,无需一行代码就能搞定机器学习,不会数学也能上手

对于机器学习和数据科学的初学者来说&#xff0c;最大的挑战之一是需要同时学习太多知识&#xff0c;特别是如果你不知道如何编码。你需要快速地适应线性代数、统计以及其他数学概念&#xff0c;并学习如何编码它们&#xff0c;对于新用户来说&#xff0c;这可能会有点难以承受…

OpenStack不行了吗?悉尼峰会,OpenStack的白城反击战?

作者&#xff1a;李开&#xff0c;九州云99Cloud联合创始人&副总裁。 11月悉尼的春天忽然变得阴冷潮湿&#xff0c;和第一天抵达时候的风和日丽大相径庭&#xff0c;海风推动着飘忽的乌云&#xff0c;有点电影《魔戒》里黑暗军团压境的味道。 由于早上不小心睡过了头&…

档案盒正面标签制作_错题本科学制作方法、正确使用方式及窍门

错题本的作用不用多说&#xff0c;重点是如何制作错题本以及正确使用方法。小编整理了以下制作错图集的正确步骤&#xff0c;希望对大家有用。一、制作错题本的简单步骤步骤1&#xff1a;把所有的练习册和试卷找出来;分学科按学期顺序整理;以学年或学期为单位装订在一起&#x…

android触摸效果,Android UI实现单行文本水平触摸滑动效果

本文实例为大家分享了单行文本水平触摸滑动效果&#xff0c;通过EditText实现TextView单行长文本水平滑动效果。下一篇再为大家介绍 多行文本折叠展开效果&#xff0c;自定义布局View实现多行文本折叠和展开。1.初衷最近做应用的时候有用到TextView单行长文本&#xff0c;当文本…

机器人爱因斯坦、索菲亚对话人类:“人类必须自我修复”

人工智能的发展速度真的太快了&#xff0c;就在不久前机器人“索菲亚”获得沙特阿拉伯获得了公民身份之后&#xff0c;机器人版的爱因斯坦教授也登上了历史的舞台。 机器人版的爱因斯坦教授是由汉森机器人(Hanson Robotics)公司制造的&#xff0c;这家机器人制造商制造的另外一…

hook控制浏览器的方法_Java-Hook技术-入门实践+反射、动态代理、热修复再看看

延续之前的MonkeyLei&#xff1a;Android-模块化、组件化、插件化、热修复-插件化-起个头&#xff0c;我们复习下里面的关于反射和动态代理点的知识。然后尝试简单了解下Hook...看之前文章&#xff0c;记得多复习下反射代理&#xff0c;比如使用这些....&#xff1a;public cla…

vscode 头文件包含问题_使用clangd替代c/c++配置vscode c++项目

背景&#xff1a;最近从Clion切换到了vscode来进行代码开发&#xff0c;发现vscode自带的c/c插件除了能够使用debug功能&#xff0c;其余代码补全&#xff0c;跳转等功能都和基于clangd的clion有较大差距&#xff0c;经常出现匹配不上或者跳转不准确的问题&#xff0c;在这背景…

微服务拆分需要考虑的必要因素与坚持原则

前言&#xff1a;创业公司往往因为有限的时间和投入&#xff0c;把系统所有的功能都聚集在一起。随着业务的不断发展&#xff0c;技术人员开始不断地对架构进行解耦和拆分。微服务在最近几年大行其道&#xff0c;很多公司的研发人员都在考虑微服务架构&#xff0c;或者在做微服…

data后缀文件解码_Java语法进阶13-文件、IO流

FileFile是文件和目录路径名的抽象表示形式&#xff0c;即File类是文件或目录的路径&#xff0c;而不是文件本身&#xff0c;因此File类不能直接访问文件内容本身&#xff0c;如果需要访问文件内容本身&#xff0c;则需要使用输入/输出流。File类的对象用来表示文件和文件夹的对…

中小型互联网公司微服务实践-经验和教训

上次写了一篇文章叫Spring Cloud在国内中小型公司能用起来吗?介绍了Spring Cloud是否能在中小公司使用起来&#xff0c;这篇文章是它的姊妹篇。其实我们在这条路上已经走了一年多&#xff0c;从16年初到现在。在使用Spring Cloud之前我们对微服务实践是没有太多的体会和经验的…