C语言如何实现顺序表的插入删除
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本文小编为大家详细介绍"C语言如何实现顺序表的插入删除",内容详细,步骤清晰,细节处理妥当,希望这篇"C语言如何实现顺序表的插入删除"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知
千家信息网最后更新 2026年10月31日C语言如何实现顺序表的插入删除
本文小编为大家详细介绍"C语言如何实现顺序表的插入删除",内容详细,步骤清晰,细节处理妥当,希望这篇"C语言如何实现顺序表的插入删除"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
首先声明一个顺序表的结构 (数组的第一个元素是0,但是顺序表的第一个一般 从1(人为设定)开始)
#include#include #define MAXSIZE 10#define OK 1#define FALSE 0 typedef int Elemtype;typedef bool Status; typedef struct list{ Elemtype *elem; int len; //数据个数 int listsize; //顺序表长度}List;
listsize代表这个顺序表的最大容量,可以随时扩容len代表在你创建的这个顺序表中有几个有效的数据,总是小于等于listsize
一、初始化顺序表属性
void list_init(List *L){ L->elem=(Elemtype *)malloc(MAXSIZE*sizeof(Elemtype));//开辟空间 if(L->elem==NULL)//判断空间是否开辟成功 { printf("malloc fail\n"); exit(0); } L->len=0; //初始化数据有效数据为0 L->listsize=MAXSIZE; //初始化数组长度为MAXSIZE}二、顺序表的插入
Status list_insert(List *L,int i,Elemtype data){ Elemtype *base,*insert,*p; if(i<1 || i>L->len+1 || L==NULL) { printf("位置输入错误\n"); return FALSE; } if(L->len > L->listsize) { base=(Elemtype *)realloc(L->elem,(L->listsize+MAXSIZE)*sizeof(Elemtype));//动态扩容 L->elem=base; L->listsize+=MAXSIZE;//更新顺序表大小 } insert=&(L->elem[i-1]);//目标指针指向要插入的目标地址 //指向最后一个元素的地址 for(p=L->elem + L->len-1;p>=insert;p--) { *(p+1)=*p; } *insert=data; L->len++; return OK;}三、删除
Status delete_list(List *L,int i){ ElemType *q,*delete_i; if(L==NULL||i<0||i>L->len) return FALSE; delete_i=&(L->elem[i-1]);//用指针指向要删除位置的地址 q=L->elem + L->len-1; //q指针指向顺序表最后一个位置的地址 首地址加上数组长度就是最后一个元素地址 for(delete_i=delete_i+1;delete_i<=q;++delete_i)//从删除位置的地址的下一个元素开始,每个往前移动一位 { *(delete_i-1)=*delete_i; //前一个位置等于后一个 } L->len--; return OK;}全部程序
#include#include #define MAXSIZE 10#define OK 1#define FALSE 0 typedef int Elemtype;typedef bool Status; typedef struct list{ Elemtype *elem; int len; int listsize;}List; void list_init(List *L){ L->elem=(Elemtype *)malloc(MAXSIZE*sizeof(Elemtype));//开辟空间 if(L->elem==NULL)//判断空间是否开辟成功 { printf("malloc fail\n"); exit(0); } L->len=0; //初始化数据有效数据为0 L->listsize=MAXSIZE; //初始化数组长度为MAXSIZE} Status list_insert(List *L,int i,Elemtype data){ Elemtype *base,*insert,*p; if(i<1 || i>L->len+1 || L==NULL) { printf("位置输入错误\n"); return FALSE; } if(L->len > L->listsize) { base=(Elemtype *)realloc(L->elem,(L->listsize+MAXSIZE)*sizeof(Elemtype)); L->elem=base; L->listsize+=MAXSIZE; } insert=&(L->elem[i-1]);//目标指针指向要插入的目标地址 //指向最后一个元素的地址 for(p=L->elem + L->len-1;p>=insert;p--) { *(p+1)=*p; } *insert=data; L->len++; return OK;} Status list_delete(List *L,int i){ Elemtype *aim,*p; if(i<0 || i>L->len) { printf("位置输入错误\n"); return FALSE; } aim=&(L->elem[i-1]);//目标指针指向要删除的目标地址 p=(L->elem+L->len-1); //指向最后一个元素的地址 for(aim=aim+1;aim<=p;++aim) //目标地址滑动删除 { *(aim-1)=*aim; } L->len--; return OK;}void show_list(List *L){ int i; for(i=0;i len;i++) { printf("elem[%d]=%d\n",i+1,L->elem[i]); } printf("\n");}int main(){ int i; List L; list_init(&L); for(i=0;i<10;i++) { list_insert(&L,i+1,i+1); } printf("插入前的顺序表\n"); show_list(&L); printf("插入后的顺序表 在5位置插入99\n"); list_insert(&L,5,99); show_list(&L); printf("删除后的顺序表 把5位置删除\n"); list_delete(&L,5); show_list(&L); return 0;}
运行结果如下
读到这里,这篇"C语言如何实现顺序表的插入删除"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
顺序
地址
指向
位置
数据
目标
元素
指针
数组
空间
长度
语言
有效
文章
错误
输入
成功
代表
内容
妥当
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
天津市摩尔互联网科技
云之行互联网科技
高科技互联网
互联网科技公司税收优惠
互联网与科技发展
杭州互联网科技公司
四个字互联网科技公司取名
南山科技园互联网公司有哪些
华夏互联网科技业
互联网科技商业
互联网科技扶贫时间
用友工业互联网科技发展
长沙互联网科技
梅州GM互联网络科技有限公司
珠海东科互联网科技有限公司
北京天晋互联网科技有限公司
互联网的科技体现在哪里
盐城市攀科互联网科技有限公司
互联网的黑科技实验室
每日互联网科技新闻
金融科技创新监管互联网金融
青海省互联网新科技
开一家科技互联网公司需要多少钱
燊美集互联网科技有限公司
如何创新互联网科技
互联网科技大赛获奖感言
杭州披云加互联网科技有限公司
互联网硬科技公司
中国互联网公司的科技投入
数字科技和互联网金融哪个好