线性表基本操作(数据结构)C++

线性表的定义:最常用且最简单的数据结构。

本篇文章介绍了线性表的插入,删除,建立空表等的操作,而且每一句都有注释,希望大家多多支持。

#include"iostream"
#include"cstdio"
#include"cstring"
#define list_init_size 100
#define listincrement 10
using namespace std;
typedef struct{
int *elem;
int length;//表示线性表的当前长度
int listsize;//表示线性表的存储空间大小
}sqlist;
int initlist(sqlist &l){
l.elem=new int (list_init_size);//为线性表分配空间
if(!l.elem)
return 0;
l.length=0;//为存储数据,所以是零
l.listsize=list_init_size;//但是已经分配好了内存空间
return 1;
}//构造一个空的线性表
int insert(sqlist &l,int i,int e){
if(i<1||i>l.length+1)
return 0;//在线性表外进行的操作,所以直接退出
if(l.length>=l.listsize){
int *newbase;
newbase=new int (l.listsize+listincrement);//C++申请动态内存的做法
if(!newbase)
return 0;//如果没有申请到则直接退出
l.elem=newbase;//将新开辟的空间的首地址赋值给elem
l.listsize+=listincrement;//更新它的最大内存
}
int *q;
q=&(l.elem[i-1]);
for(int *p=&(l.elem[l.length-1]);p>=q;–p){
*(p+1)=*p;//将q以后的所有数据向后一位
}
*q=e;//将e插入到q的位置
++l.length;//总长度加一
return 1;
}//在线性表中插入数据
int listdelete(sqlist &l,int i,int &e){
if(i<1||i>=l.length)
return 0;
int *p;
p=&(l.elem[i-1]);//指向要删除位置
e=*p;//将要删除位置元素的指赋值给e
int *q;
q=l.elem+l.length;//q指向最后一个的位置
for(++p;p<=q;++p){
*(p-1)=*p;//将p以后的元素全部进行左移
}
–l.length;//长度减一
return 1;
}//删除线性表的第i个元素
int getelem(sqlist &l,int i,int &e){
int *q;
q=&(l.elem[i-1]);
e=*q;
return 1;
}//得到线性表第i个元素的值
void locateElem(sqlist &l,int e){
int i=0,*q;
q=&(l.elem[i]);
if(e!=*q){
i++;
}
else
cout<<i<<endl;
}
return;
}
void printf_list(sqlist &l){
for(int i=0;i<l.length;i++){
cout<<l.elem[i]<<" “;
}
cout<<endl;
}//输出线性表
int main(int argc, char const *argv[]) {
sqlist l;
int a,b;
initlist(l);
insert(l,1,9);
insert(l,2,8);
insert(l,2,7);
printf_list(l);
listdelete(l,2,a);
printf_list(l);
getelem(l,2,b);
cout<<a<<” "<<b<<endl;
locateElem(l,9);
return 0;
}

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值