数据结构顺序表操作C++
#include <iostream>
#include <stdio.h>
using namespace std;
typedef int status;
const int MaxSize= 150 ;
typedef struct
{
int * elem;
int length;
} SqList;
SqList L;
void InitList_sq ( SqList & L) ;
void ListLength ( SqList & L) ;
void EmptyList ( SqList & L) ;
void ClearList ( SqList & L) ;
void Illegal ( SqList & L, int i) ;
void PointList ( SqList & L, int i) ;
void BeforPoint ( SqList & L, int i) ;
void AfterPoint ( SqList & L, int i) ;
void InsertList ( SqList & L, int i, int x) ;
void InsertProcess ( SqList & L, int i, int x) ;
void DeleteList ( SqList & L, int i) ;
void Display ( SqList & L) ;
void Tips ( ) ;
int main ( )
{
Tips ( ) ;
InitList_sq ( L) ;
int h, k, i;
cout << "输入你要进行操作的相应数字:" ;
cin>> i;
while ( true )
{
switch ( i)
{
case 1 :
ClearList ( L) ;
cout << "输入你要进行操作的相应数字:" ;
cin>> i;
break ;
case 2 :
EmptyList ( L) ;
cout<< "输入你要进行操作的相应数字:" ;
cin>> i;
break ;
case 3 :
ListLength ( L) ;
cout<< "输入你要进行操作的相应数字:" ;
cin>> i;
break ;
case 4 :
cout<< "输入指定位置:" ;
cin>> h;
PointList ( L, h) ;
cout<< "输入你要进行操作的相应数字:" ;
cin>> i;
break ;
case 5 :
cout<< "输入指定位置:" ;
cin>> h;
BeforPoint ( L, h) ;
cout<< "输入你要进行操作的相应数字:" ;
cin>> i;
break ;
case 6 :
cout<< "输入指定位置:" ;
cin>> h;
AfterPoint ( L, h) ;
cout<< "输入你要进行操作的相应数字:" ;
cin>> i;
break ;
case 7 :
cout<< "输入指定位置:" ;
cin>> h;
cout<< "输入插入的数值:" ;
cin>> k;
InsertList ( L, h, k) ;
cout<< "输入你要进行操作的相应数字:" ;
cin>> i;
break ;
case 8 :
cout<< "输入指定位置:" ;
cin>> h;
DeleteList ( L, h) ;
cout<< "输入你要进行操作的相应数字:" ;
cin>> i;
break ;
case 9 :
Display ( L) ;
cout<< "输入你要进行操作的相应数字:" ;
cin>> i;
break ;
case 10 :
Tips ( ) ;
cout<< "输入你要进行操作的相应数字:" ;
cin>> i;
break ;
default :
if ( i < 0 )
return 0 ;
else
{
cout<< "输入数字非法,请重新输入:" ;
cin>> i;
}
break ;
}
}
return 0 ;
}
void InitList_sq ( SqList & L)
{
L. elem = new int [ MaxSize] ;
if ( ! L. elem)
cout<< "不能正确初始化" << endl;
L. length = 0 ;
}
void ListLength ( SqList & L)
{
cout<< "顺序表的长度是:" << L. length<< endl;
}
void EmptyList ( SqList & L)
{
if ( L. length == 0 )
{
cout<< "顺序表为空" << endl;
}
else
{
cout<< "顺序表不为空" << endl;
ListLength ( L) ;
}
}
void ClearList ( SqList & L)
{
if ( L. length == 0 )
{
cout<< "顺序表本身是空表" << endl;
}
else
{
L. length = 0 ;
cout<< "顺序表已经清空" << endl;
}
}
void Illegal ( SqList & L, int i)
{
cout<< "输入的数字非法" << endl;
}
void PointList ( SqList & L, int i)
{
if ( i<= 0 || i> L. length)
{
Illegal ( L, i) ;
}
else
{
cout<< "指定位置的元素为:" << L. elem[ i- 1 ] << endl;
}
}
void BeforPoint ( SqList & L, int i)
{
if ( i<= 0 || i> L. length)
{
Illegal ( L, i) ;
}
else if ( i == 1 )
{
cout<< "不存在前驱" << endl;
}
else
{
cout<< "指定位置的前驱是:" << L. elem[ i- 2 ] << endl;
}
}
void AfterPoint ( SqList & L, int i)
{
if ( i<= 0 || i> L. length)
{
Illegal ( L, i) ;
}
else if ( i == L. length)
{
cout<< "不存在后继" << endl;
}
else
{
cout<< "指定位置的后继是:" << L. elem[ i] << endl;
}
}
void InsertList ( SqList & L, int i, int x)
{
if ( i<= 0 || i> L. length+ 1 )
{
Illegal ( L, i) ;
}
else
{
InsertProcess ( L, i, x) ;
}
}
void InsertProcess ( SqList & L, int i, int x)
{
for ( int j= L. length- 1 ; j>= i- 1 ; j-- )
L. elem[ j+ 1 ] = L. elem[ j] ;
L. elem[ i- 1 ] = x;
++ L. length;
cout<< "插入元素成功" << endl;
}
void DeleteList ( SqList & L, int i)
{
if ( i<= 0 || i> L. length)
{
Illegal ( L, i) ;
}
else
{
for ( int j= i; j<= L. length; j++ )
{
if ( j== i)
{
L. elem[ j- 1 ] = NULL ;
}
else
{
L. elem[ j- 2 ] = L. elem[ j- 1 ] ;
}
}
-- L. length;
cout<< "删除元素成功" << endl;
}
}
void Display ( SqList & L)
{
if ( L. length == 0 )
{
cout<< "顺序表为空表" << endl;
}
else
{
cout<< "顺序表的元素是:" ;
for ( int j= 0 ; j< L. length; j++ )
{
cout<< L. elem[ j] << "," ;
}
cout<< endl;
}
}
void Tips ( )
{
cout<< "1812050190-高启浩" << endl;
cout << "1-----清空线性表" << endl;
cout << "2-----判断线性表是否为空" << endl;
cout << "3-----求线性表长度" << endl;
cout << "4-----获取线性表指定位置元素" << endl;
cout << "5-----求前驱" << endl;
cout << "6-----求后继" << endl;
cout << "7-----在线性表指定位置插入元素 " << endl;
cout << "8-----删除线性表指定位置元素" << endl;
cout << "9-----显示线性表" << endl;
cout << "10----显示提示信息" << endl;
cout << " 退出,输入一个负数!" << endl;
}