顺序表简单功能实现:
#include<iostream>
using namespace std;
typedef int DataType;
#define MAX 100
//#pragma warning(disable:6385)
//#pragma warning(disable:6386)
//#pragma warning(push)
//#pragma warning(pop)
class List
{
public:
void InitList();
void Length();
void CreateList(int n);
void Insert(DataType x, int i);
void Deleted(int i);
void Locate(DataType x);
DataType Get(int i);
void printList();
DataType arr[MAX];
int length;
};
void List::InitList()
{
length = 0;
}
void List::CreateList( int n)
{
if (n<0||n>MAX)
{
cout << "初始化失败!" << endl;
}
else
{
for (int i = 0; i < n; i++)
{
cin >>arr[i];
length++;
}
cout << "length:" << length << endl;
}
}
//在线性表的第i个数据元素之前插入一个新的数据元素x
void List::Insert(DataType x,int i)
{
int j;
if (length >=MAX)
{
cout << "overflow!" << endl;
}
else if ((i<1)||(i>length+1))
{
cout << "position is error!1" << endl;
}
else
{
for (j = length; j >= i; j--)
{
arr[j] = arr[j - 1];
}
arr[i - 1] = x;
length++;
}
}
//删除第i个位置
void List::Deleted(int i)
{
//int j=0;
if ((i<1 )|| (i>length ))
{
cout << "position is error!2" << endl;
}
else
{
for (int j = i; j <length; j++)
{
arr[j - 1] = arr[j];
}
length--;
}
}
//返回为x的位序值
void List:: Locate(DataType x)
{
int j = 0;
//该循环只为找到等于值x的下标
while(arr[j] != x&&j<length)
{
j++;
}
if(j<length)
cout << j + 1 << endl;;
}
//返回第i个位置对应的值
DataType List::Get(int i)
{
if ((i<0) ||( i>length))
{
cout << "i是错误的位置!" << endl;
return 0;
}
cout << "i位置的值:"<<arr[i - 1] << endl;
return arr[i - 1];
}
void List::Length()
{
cout<< length;
}
void List::printList()
{
cout << "打印输出单链表:" << endl;
for (int i = 0; i <length; i++)
{
cout << arr[i]<<" ";
}
cout << endl;
}
int main()
{
List L;
L.InitList();
L.CreateList(6);
L.printList();
L.Deleted(3);
L.printList();
L.Get(3);
L.Insert(66,3);
L.printList();
L.Locate(6);
system("pause");
return 0;
}