数据结构—顺序表的建立及使用

#include<iostream.h>
#define DATATYPE int
#define MAXSIZE 100
typedef int sqlist[MAXSIZE];


void InitList(sqlist L,int n)
{//顺序表的初始化
	int i;
	cout<<"请输入顺序表的各个元素:"<<endl;

	for(i=0;i<n;i++)
	{
		cin>>L[i];
		cout<<L[i]<<" ";
	}//输入顺序表的各个元素并输出各个元素
	
	cout<<endl;
}


void CpyList(sqlist L,sqlist y)
{//复制L到y(用于在主函数中将变化的顺序表变回原样,进行对原顺序表的下一步的操作)
	int i;

	for(i=0;i<100;i++)
		y[i]=L[i];
}
void LocateList(sqlist L,int n)
{// 查找顺序表中的最大的值并输出
	int i,k;
	k=L[0];//k中L中最大的值

	for(i=0;i<n;i++)
		if(L[i]>k) k=L[i];

	cout<<"顺序表中最大的元素为"<<k<<endl;
}
void InsertList(sqlist L,int n,int i,int x)
{//在线性表的第i个元素前插入一个正整数x
	int j;

	for(j=n-1;j>=i-1;j--)
		L[j+1]=L[j];//第i个元素后面的元素向后移

	L[i-1]=x;//将x插入到第i个元素

	cout<<"插入后的数组:"<<endl;

	for(j=0;j<n+1;j++)
		cout<<L[j]<<" ";//将插入后的数组输出

	cout<<endl;
}
void DeleteList(sqlist L,int n,int j)
{//删除线性表中的第j个元素
	int i;

	for(i=j;i<n;i++)
	{
		L[i-1]=L[i];
	}//将第j个元素后面的元素向前移

	cout<<"删除后的数组:"<<endl;

	for(i=0;i<n-1;i++)
	{
		cout<<L[i]<<" ";
	}//输出删除后的数组

	cout<<endl;
}
void SortList(sqlist L,int n)
{//将线性表中的元素按升序排列
	int i,j;
	sqlist k;//中间变量temp

	for(i=0;i<n-1;i++)
		for(j=0;j<n-i-1;j++)
		{
			if(L[j]>L[j+1])
			{k[0]=L[j];L[j]=L[j+1];L[j+1]=k[0];}
		}//冒泡排序法

	cout<<"升序排序:"<<endl;

	for(i=0;i<n;i++)
	{
		cout<<L[i]<<" ";
	}//将升序排列后的数组输出

	cout<<endl;
}
void RevordList(sqlist L,int n)
{//逆序(用一个暂存空间)(程序在内存空间的问题上出现问题,作者会尽快解决!!)
	int i;

	cout<<"逆序:"<<endl;

	for(i=n-1;i>=0;i--)
	{
		cout<<L[i]<<" ";
	}

	cout<<endl;
}
void main()
{
	char choice;
    sqlist L,y;
	int n,i,x,j;

	cout<<"请输入顺序表元素的个数:"<<endl;
	cin>>n;

	InitList(L,n);
	CpyList(L,y);

	cout<<"输入A,查找顺序表中的最大的值并输出"<<endl;
	cout<<"输入B,在线性表的第i个元素前插入一个正整数x"<<endl;
	cout<<"输入C,删除线性表中的第j个元素"<<endl;
	cout<<"输入D,将线性表中的元素按升序排列"<<endl;
	cout<<"输入E,将线性表中逆序排列"<<endl;
	cout<<"输入F,将结束程序"<<endl;
	cout<<"请输入:"<<endl;

	do
	{
		cin>>choice;
	
		switch(choice)
		{
		case'A':{
		LocateList(L,n);CpyList(y,L);continue;
			}
	
		case'B':{
		cout<<"请分别输入i和x:"<<endl;
		cin>>i>>x;
		InsertList(L,n,i,x);CpyList(y,L);continue;
			}
	
		case'C':{
		cout<<"请输入j:"<<endl;
		cin>>j;
		DeleteList(L,n,j);CpyList(y,L);continue;
			}
	
		case'D':{
		SortList(L,n);CpyList(y,L);continue;
			}
	
		case'E':{
		RevordList(L,n);CpyList(y,L);continue;
			}
	
		}
	}
	while(choice!='F');
}

猜你喜欢

转载自blog.csdn.net/qq_41596915/article/details/82854718