#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(List &L);
void Length(List& L);
void CreateList(List &Li,int n);
void Insert(List& L,DataType x, int i);
void Deleted(List& L,int i);
void Locate(List& L,DataType x);
DataType Get(List& L,int i);
void printList(List& L);
private:
DataType arr[MAX];
int length;
};
void List::InitList(List& L)
{
L.length = 0;
}
void List::CreateList(List& Li, int n)
{
if (n<0&&n>MAX)
{
cout << "初始化失败!" << endl;
}
else
{
for (int i = 0; i < n; i++)
{
cin >> Li.arr[i];
Li.length++;
}
}
}
//在线性表的第i个数据元素之前插入一个新的数据元素x
void List::Insert(List& L,DataType x,int i)
{
int j;
if (length > MAX)
{
cout << "overflow!" << endl;
}
else if ((i<0&&i>length+1))
{
cout << "position is error!" << endl;
}
else
{
for (j = L.length; j >= i; j--)
{
L.arr[j] =L.arr[j - 1];
}
L.arr[i - 1] = x;
length++;
}
}
//删除第i个位置
void List::Deleted(List& L,int i)
{
//int j=0;
if ((i<0 && i>L.length ))
{
cout << "position is error!" << endl;
}
else
{
for (int j = i; j <L.length; j++)
{
L.arr[j - 1] = L.arr[j];
}
length--;
}
}
//返回为x的位序值
void List:: Locate(List& L,DataType x)
{
int j = 0;
for (j = 0; j < length; j++)
{
if (arr[j]==x)
{
cout << j + 1;
}
else
{
cout << "x不存在于该链表!" << endl;
}
}
}
//返回第i个位置对应的值
DataType List::Get(List& L,int i)
{
if (i<0 && i>length)
{
cout << "i是错误的位置!" << endl;
return 0;
}
else return L.arr[i - 1];
}
void List::Length(List& L)
{
cout<< L.length;
}
void List::printList(List& L)
{
for (int i = 0; i <L.length; i++)
{
cout << L.arr[i]<<" ";
}
}
int main()
{
List L;
L.CreateList(L,6);
L.printList(L);
L.InitList(L);
L.Insert(L,3,5);
L.printList(L);
L.Get(L,4);
L.Length(L);
L.Locate(L,6);
system("pause");
return 0;
}
这个问题如何解决?感谢感谢!