线性表的顺序存储及增删改查

线性表的顺序存储及增删改查

代码

#include 
#define MAXSIZE 10
using namespace std;
typedef int Status;
typedef int ElemType;
typedef struct
{
     
        ElemType *elem;
        int length;
}SqList;
Status InitList(SqList &L)
{
     
        L.elem=new ElemType[MAXSIZE];
        if(!L.elem)
        {
     
        	cout<<"空间分配失败!"<<endl;
			return 0;			 
        }
        L.length=0;
        return 1;
}
//创建线性表
Status CreatList(SqList&L)
 {
     
 	int n;
	 cout<<"输入元素个数:"<<endl;
	 cin>>n;
	 if(n>MAXSIZE)
	 {
     
	 	cout<<"输入个数大于上限!"<<endl;
		 return 0;
	 } 
	 L.length=n;
	 cout<<"请输入元素:"<<endl;
	 for(int i=0;i<L.length;i++)
	     cin>>L.elem[i];
	 return 1;
 }
//插入
Status InsertList(SqList &L,int i,ElemType x)
{
     
int j;
if(i<1||i>L.length+1)
{
     
	cout<<"插入位置错误!"<<endl;
	return 0 ;
}
if(L.length>=MAXSIZE)
  {
     
  	cout<<"插入位置超出上限!"<<endl;
	  return 0; 
  } 
  cout<<"请输入要插入的线性表元素"<<endl; 
for(j=L.length-1;j>=i-1;j--)
  L.elem[j+1]=L.elem[j];
L.elem[i-1]=x;
L.length++;
return 1;
}

//删除
Status ListDelete(SqList &L,int i)
{
     
        int j;
        if(i<1||i>L.length)
        {
     
            cout<<"删除位置错误!"<<endl; 
            return 0;
        }
        for(j=i;j<L.length-1;j++)
                L.elem[j-1]=L.elem[j];
        L.length--;
        return 1;
}
//排序(选择)
void SortList(SqList &L)
{
     
	int i,j,k;
	ElemType t;
    for(i=0;i<L.length-1;i++)
    {
     
    	k=i;
    	for(j=i+1;j<L.length;j++)
    	   if(L.elem[k]>L.elem[j])
    	   k=j;
    if(i!=k)
      {
     
    	t=L.elem[i];
    	L.elem[i]=L.elem[k];
    	L.elem[k]=t;
      }
    }
} 
//显示
void ShowList(SqList L)
{
     
	if(L.length==0)
	{
     
		cout<<"空!"<<endl;
		return;
	}
		cout<<"当前线性表:"<<endl;
	for(int i=0;i<L.length;i++)
	   cout<<L.elem[i]<<" ";
   cout<<endl;
}
 
int main()
{
     
	SqList L;
	int i;
	ElemType x;
	InitList(L);
/**************创建线性表**************/	
	CreatList(L);
    ShowList(L);
/**************按位置插入数据**************/	
	cout<<"请输入插入数据:"<<endl;
	cin>>x;
	cout<<"请输入插入位置:"<<endl;
	cin>>i;
	  if(InsertList(L,i,x)==0)
	      cout<<"插入失败"<<endl;
	  else
	      cout<<"插入成功"<<endl; 
	ShowList(L);
/**************按位置删除数据**************/	
	cout<<"请输入删除位置:"<<endl;
	cin>>i;
	if(ListDelete(L,i)==0)
	      cout<<"删除失败"<<endl;
	  else
	      cout<<"删除成功"<<endl; 
	ShowList(L);
/**************线性表排序(顺序)*************/	
    SortList(L);//排序
    cout << "排序后的线性表为:" << endl;
	ShowList(L); 
	
	return 0;	    
}

实现截图

线性表的顺序存储及增删改查_第1张图片

你可能感兴趣的:(c++)