c++实现顺序表(基本操作)


顺序表基本操作: 插入,删除,查找

 #include<iostream>
using namespace std;
//指定空间大小
###### #define maxsize 100
//结构体 
typedef struct 
{
	int data[maxsize];
	int length;
}Sqlist;

 //初始化
void init(Sqlist &l)
{
 	l.length=0;
} 

//插入
//表l指定位置p插入元素e 
//元素后往前,后移动一个位置,到p 
int insert(Sqlist &l,int p,int e)
{
    if(p<0||p>l.length-1||l.length==maxsize)
     return 0;
for(int i=l.length-1;i>p;--i)
  l.data[i+1]=l.data[i];
l.data[p]=e;
++(l.length);
return 1; 
} 
//删除
//l的指定位置p删除e
//从p位置后元素,前移一个位置 ,表长+1 
int Delete(Sqlist &l,int p,int &e)
{
	if(p<0||p>l.length-1||l.length==maxsize)
	    return 0;
	e=l.data[p];
	for(int i=p;i>l.length-1;++i)
	    l.data[i]=l.data[i+1];
	--(l.length);
	return 1;
 } 
  //查找(定位) 
 //按元素值查找,返回找到位置下标 
int fine(Sqlist l,int e) 
{
	for(int i=0;i<l.length;++i)
	  if(e==l.data[i])
	     return i;
	return -1;
}
//指定位置元素 
int get(Sqlist l,int p,int e)
{
	if(p<0||p>l.length||l.length==maxsize)
	   return 0;
	e=l.data[p];
	return 1;
} 
//打印线性表元素 
void print(Sqlist &l,int n)
{
	cout<<"线性表元素:"<<endl; 
	for(int i=0;i<=n-1;++i)
	    cout<<l.data[i]<<",";
	cout<<endl;
}
 //主函数
void menu()
{
	cout<<"========顺序表========="<<endl;
	cout<<"      0.打印表" <<endl;
	cout<<"      1.初始化" <<endl;
	cout<<"      2.插入" <<endl; 
	cout<<"      3.删除" <<endl;
	cout<<"      4.按值查找" <<endl;
	cout<<"      5.求指定位置元素" <<endl;
 } 
int main()
{
	menu();
	
	Sqlist l;
	cout<<"输入表长:";
	cin>>l.length;
	cout<<"输入线性表个数:";
	int n;
	cin>>n; 
	cout<<"输入线性表元素:"<<endl;
	    for(int i=0;i<=n-1;++i)
		    cin>>l.data[i];
    
    int f=1;
    while(f==1){
    	
	cout<<"选择你的操作:";
	int c=0;
	cin>>c;
	switch(c)
	{
		case 0: 
		    print(l,n);
			break; 
		case 1:
			init(l);
			break;
		case 2:
			cout<<"输入要插入的位置,元素:";
			int p1,e1;
			cin>>p1;
			cin>>e1; 
			if(insert(l,p1,e1)==0)
			   {
			   cout<<"插入失败!"<<endl; 
			   print(l,n);
		}
			else{
				cout<<"插入成功!"<<endl;
			print(l,n+1);
			} 
		    break;	
		case 3:
			cout<<"输入要删除的位置,元素:";
			int p2,e2;
			cin>>p2;
			cin>>e2; 
			if(Delete(l,p2,e2)==0)
			 { 
			  cout<<"删除失败!"<<endl; 
			  print(l,n);
			  } 
			else{
			 cout<<"删除成功!"<<endl; 
			print(l,n-1);
			} 
			break;
			
		case 4:
			cout<<"输入要定位的元素:";
			int e3;
			cin>>e3; 
			if(fine(l,e3)==0)
			   cout<<"定位失败!"<<endl; 
			else cout<<"定位成功!"<<endl; 	
			break;
			
		case 5:
			cout<<"输入要查找的位置,元素:";
			int p4,e4;
			cin>>p4;
			cin>>e4; 
			if(get(l,p4,e4)==0)
			   cout<<"查找失败!"<<endl; 
			else cout<<"查找成功!"<<endl; 
			break;
			
		default:
		    cout<<"选择错误!";
			break; 
	}

    cout<<"===================="<<endl;
	cout<<"是否继续(1|0)?";
	cin>>f;
	if(f==1) continue;
	else break;
}

  return 0;
  }```


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM