C++实现顺序表的创建、初始化、查找、插入、删除

C++实现顺序表的创建、初始化、查找、插入、删除

在学习了数据结构之后,对于顺序表的相关操作有了自己的启发,因此拿来敲个代码练练手,我选用的是C++语言,因为我觉得c++可以使用引用,比较方便(纯个人看法嘻嘻),话不多说,上代码

#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;
	}


在写的时候要注意,这里的位置是从1开始的,而数组中的第一个元素是数组中的0下标,也就是说p位置对应的是数组中的L.data[p-1].
初次写顺序表,代码有不成熟之处还请指出。
运行截图:
在这里插入图片描述

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值