我是靠谱客的博主 大气含羞草,最近开发中收集的这篇文章主要介绍C++实现顺序表的基本操作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

C++实现顺序表的基本操作

为了对数据结构线性表中的顺序表进行练习,我写了一段可以实现顺序表创建、插入、删除、排序、打印等基本操作的代码。

#include<iostream>
#include<algorithm>
using namespace std;
#define MAXSIZE 1000
#define OVERFLOW -2
#define ERROR 1
typedef int ElemType;
typedef int Status;
//顺序表的建立:定义了一个名为SqList的结构体
typedef struct{
ElemType *elem;
//
存储空间的基地址
int length;
//当前长度
}SqList;
// 顺序表的初始化
void InitList(SqList &L){
L.elem = new ElemType[MAXSIZE];
//	构造一个新的顺序表L 并为之分配大小为MAXSIZE的空间
if(L.elem == NULL){
cout<<"存储空间分配失败!"<<endl;
exit(OVERFLOW);
}
// 存储空间分配失败退出
L.length = 0;
cout<<"顺序表初始化完成"<<endl;
}
//顺序表读入值
void Create(SqList &L,int n,ElemType e){
for(int i = 0;i<n;i++){
ElemType e;
cin>>e;
L.elem[i] = e;
L.length++;
}
}
//顺序表插入值
int Insert(SqList &L,int i,ElemType e){
cout<<"请输入要插入的元素及其插的位置"<<endl;
cin>>e>>i;
if((i<1)||(i>L.length+1))
{
cout<<"插入地址不合法"<<endl;
return ERROR;
}
if(L.length == MAXSIZE)
{
cout<<"存储空间已满"<<endl;
return ERROR;
}
for(int j = L.length-1;j>=i-1;j--){
L.elem[j+1] = L.elem[j];
}
//	以上是从后比较的方法 可以边比较边移动
L.elem[i-1] = e;
++L.length;
}
int Delete(SqList &L,int i){
cout<<"请输入要删除的元素的位置"<<endl;
cin>>i;
if((i<1)||(i>L.length))
{
cout<<"删除地址不合法"<<endl;
return ERROR;
}
for(int j = i;j<=L.length;j++){
L.elem[j-1] = L.elem[j];
}
--L.length;
}
int Print(SqList L)
{
if (L.length == 0)
{
return 1;
}
for (int k = 0; k < L.length; k++)
{
if(k == L.length-1)
{
cout<<L.elem[k];
}
else{
cout<<L.elem[k]<<' ';
}
}
}
void Sort(SqList L){
sort(L.elem , L.elem + L.length);
}
int main(){
int n , x;
cout<<"请输入n值"<<endl;
cin>>n;
//	输入数组的长度n
SqList L;
ElemType e;
//	在主函数中进行声明
InitList(L);
//
顺序表的初始化
loop:
cout<<"请选择您想进行的操作"<<endl;
cout<<"0.给顺序表读入值"<<endl;
cout<<"1.给顺序表插入值"<<endl;
cout<<"2.给顺序表删除值"<<endl;
cout<<"3.给顺序表排序"<<endl;
cout<<"4.输出顺序表"<<endl;
cin>>x;
switch(x){
case 0:{
cout<<"请输入数组的各个元素"<<endl;
Create(L , n , e);
cout<<"退出请按1,输入其他数字返回上级清单"<<endl;
int p;
cin>>p;
if(p == 1){
return 0;
}
else{
goto loop;
}
break;
}
case 1:{
int i;
Insert(L , i , e);
cout<<"插入之后的数组"<<endl;
Print(L);
cout<<"退出请按1,输入其他数字返回上级清单"<<endl;
int p;
cin>>p;
if(p == 1){
return 0;
}
else{
goto loop;
}
break;
}
case 2:{
int i;
Delete(L , i);
cout<<"删除之后的数组:"<<endl;
Print(L);
cout<<"退出请按1,输入其他数字返回上级清单"<<endl;
int p;
cin>>p;
if(p == 1){
return 0;
}
else{
goto loop;
}
break;
}
case 3:{
Sort(L);
Print(L);
cout<<"退出请按1,输入其他数字返回上级清单"<<endl;
int p;
cin>>p;
if(p == 1){
return 0;
}
else{
goto loop;
}
break;
}
case 4:{
Print(L);
cout<<"退出请按1,输入其他数字返回上级清单"<<endl;
int p;
cin>>p;
if(p == 1){
return 0;
}
else{
goto loop;
}
break;
}
default : {
cout<<"请输入正确的数字!"<<endl;
goto loop;
break;
}
}
return 0;
}

最后

以上就是大气含羞草为你收集整理的C++实现顺序表的基本操作的全部内容,希望文章能够帮你解决C++实现顺序表的基本操作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部