- 基本运算:
(1)初始化
(2)判断表是否为空 (表结点个数是否为零)
(3)判断表是否为满 (表结点数是否为最大允许个数)
(4)求表长(结点数)
(5)取表中第i个结点数
(6)查找表中值为x的结点
(7)表中第i个位置插入结点
(8)删除表中的第i个位置结点
2.结构体的方式表示线性表
线性表(结构体)
#include <iostream>
#include <fstream>
using namespace std;
struct LinearList
{
int* data; //线性表以数组方式
int MaxSize; //表示控制最大范围
int count; //表当前结点,即表长
};
void initList(LinearList* L,int sz)//创建列表,初始化
{
L->MaxSize = sz;
L->count = 0;
L->data = new int[sz];
}
void FreeList(LinearList* L)//清除列表
{
delete L->data;
//free[L->data];
}
bool ListFull(LinearList* L)//判断满
{
return L->count = L->MaxSize ? true : false;
}
bool ListEmpty(LinearList* L)//判断空
{
if (L->count == 0)
return true;
return false;
}
int ListLength(LinearList* L)//长度
{
return L->count;
}
int LocateElem(LinearList* L, int x)//取表中第i个结点数
{
for (int i = 0; i < L->count; i++)
if (L->data[i] == x)
return L->data[i];
return -1;
}
bool InsertElem(LinearList*L, int i,int x)//插入结点
{
if(i < 0 || i > L->MaxSize || L->count == L->MaxSize)
{
return false;
}
else
{
for(int j = L->count; j > i; j--)
{
L->data[j] = L->data[j - 1];
}
L->data[i] = x;
L->count++;
return true;
}
}
bool DeleteElem(LinearList* L,int i)//删除结点
{
if(i < 0 || i > L->count || L->count == 0)
{
return false;
}
else
{
for(int j = i; j < L->count-1; j--)
{
L->data[j] = L->data[j+1];
}
L->count--;
return true;
}
}
int main()
{
LinearList L;
int sz;
cin >> sz;
initList(&L,sz);
InsertElem(&L, 0, 3);
cout << L.data[0];
return 0;
}
3、类的方式实现线性表
线性表(类)
#include <iostream>
#include <fstream>
using namespace std;
template <class T>
class LinearList
{
private:
T * data;
int MaxSize;
int count;
public:
LinearList(int sz) //初始化
{
MaxSize = sz;
count = 0;
data = new int[sz];
}
~LinearList()//析构函数
{
delete []data;
}
bool ListFull()//判断满
{
return count = MaxSize ? true : false;
}
bool ListEmpty()//判断空
{
return (count <= 0) ? true : false;
}
int ListLength()//长度为私有变量所以要单独设置函数来求它的长度。
{
return count;
}
T Get(int i)//求第i个结点的值
{
return (i < 0 || i >= count ? NULL : data[i]);
}
int Locate(T &x)
{
for(int i = 0; i < count; i++)
{
if(data[i] == x)
return i;
}
return -1;//查找失败
}
bool Insert(T x, int i)//第i个位置插入值为x的结点
{
if(i < 0 || i > count || count == MaxSize)
return false;
else
{
for(int j = count; j > i; j--)
{
data[j] = data[j - 1];
}
data[i] = x;
count++;
return true;
}
}
bool Delete(int i)
{
if(i < 0 || i >= count || count == 0)
return false;
else
{
for(int j = i; j < count - 1; j++)
{
data[j] = data[j + 1];
}
count--;
return true;
}
}
};
int main()
{
LinearList<int> s1(100);
s1.Insert(5,0);
cout << s1.Get(0);
return 0;
return 0;
}