26.顺序表的C++代码实现

用C++实现顺序表的初始化,建立,增加,查找,删除等操作。这里写的就是真正可运行的代码而非教材中的伪代码。在写代码的时候踩了一个坑:vscode报cout不明确的错误。解决方案是:

(1)将using namespace std; 删除后按ctrl+S保存cpp文件,

(2)再加上using namespace std; 按ctrl+S保存cpp文件。

完整代码如下:

#include<iostream>
#include<algorithm>

using namespace std;
#define MaxSize 10

//顺序表的建立 
typedef struct{
	int data[MaxSize];  //存储空间的基地址
	int length;  //当前长度 
}SqList;
	 
//顺序表的初始化
void InitList(SqList &L){
	L.length = 0;
	cout<<"顺序表初始化完成"<<endl; 
} 
		
//顺序表传值 
void CreatList(SqList &L,int n){
	cout<<"请传入数值"<<endl; 
	for(int i=0;i<n;i++){
		cin>>L.data[i];
		L.length++;
	}
}
	
//打印顺序表 
int Print(SqList L){
	cout<<"目前顺序表为:"<<endl;
	if (L.length == 0){
	    return 0;
	}
	for (int k = 0; k < L.length; k++){  //输出顺序表 
	    cout<<L.data[k]<<"\t";	
	}
	cout<<endl;
}

//查找元素
int getElem(SqList L){
	int p;
	int e;
	cout<<"请输入要查找元素的位置"<<endl;
	cin>>p;
	if(p<0||p>L.length-1) return 0;
	else{
		e=L.data[p-1];  //第p个元素对应数组中的L.data[p-1]
		cout<<"你要查找的元素为:"<<e<<endl;
	}
}
	 
//插入元素
int insertElem(SqList &L){
	int p,e,i;
	cout<<"请输入要插入的位置及元素"<<endl;
	cin>>p>>e;
	if(p<0||p>L.length||L.length==MaxSize){  //判断要插入的位置是否合法并且判断线性表是否达到了最大 
		cout<<"插入地址不合法"<<endl; 
		return 0;
	} 
	for(i=L.length-1;i>=p-1;i--){
		L.data[i+1]=L.data[i];  //从后往前,逐个将元素后移 
	}
	L.data[p-1]=e;  //第p个元素对应数组中的L.data[p-1] 
	L.length++;
	cout<<"插入成功"<<endl; 
}
	  
//删除元素
int deleteElem(SqList &L){
	int p;
	cout<<"请输入要删除的元素位置"<<endl;
	cin>>p;
	if(p<0||p>L.length-1){  //判断地址是否合法 
		cout<<"地址不合法"<<endl;
		return 0;
	}
	for(int j = p;j<=L.length;j++){
		L.data[j-1] = L.data[j];  //从p位置开始,后面的依次前移 
	}
	L.length--;
	cout<<"删除成功"<<endl; 
} 

int main(){
	int n,e;
	cout<<"请输入顺序表长度"<<endl;
	cin>>n;	 //输入数组的长度n
	SqList L;
	InitList(L);  //顺序表的初始化
	CreatList(L,n);	 //顺序表传值 
	Print(L);  //打印顺序表
	getElem(L);  //查找相应位置元素 
	insertElem(L);  //插入元素 
	Print(L);  //再次打印顺序表 
	deleteElem(L);  //删除元素
	Print(L);  //再次打印顺序表  
	return 0;
}

输出结果:

请输入顺序表长度
5
顺序表初始化完成
请传入数值
1 2 3 4 5
目前顺序表为:
1       2       3       4       5
请输入要查找元素的位置
1
你要查找的元素为:1
请输入要插入的位置及元素
2
3
插入成功
目前顺序表为:
1       3       2       3       4       5
请输入要删除的元素位置
4
删除成功
目前顺序表为:
1       3       2       4       5
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北京地铁1号线

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值