头文件引入
#define MAXSIZE 100
#define OVERFLOW -2
#define OK 1
#define ERROR -1
#define TRUE 1
#define FALSE 0
typedef int Elemtype;
typedef int Status;
#include <xmemory>
#include <iostream>
using namespace std;
定义一个结构体,操作如下:
typedef struct SqList
{
int* elem;
int length;
}SqList;
1.线性表的初始化
Status IntList_Sq(SqList &L)
{
//L.elem = (int*)malloc(MAXSIZE * (sizeof(int)));
L.elem = new int[MAXSIZE];
if (!L.elem) exit(OVERFLOW);
L.length = 0;
return OK;
}
2.销毁线性表
void DestroyList(SqList& L)
{
if (L.elem) delete L.elem;
}
3.清空线性表
void ClearList(SqList& L)
{
L.length = 0;
}
4.求线性表的长度
Status GetLength(SqList L)
{
return L.length;
}
5.判断线性表L是否为空
Status Isempty(SqList L)
{
if (L.length == 0) return 1;
else return 0;
}
6.判断线性表L是否已满
Status Isfull(SqList L)
{
if (L.length == MAXSIZE) return 1;
else return 0;
}
7.顺序表的取值
Status Getelem(SqList L, int i, int& e)
{
if (i < 1 || i > L.length) return ERROR;
e = L.elem[i - 1];
return OK;
}
8.顺序表—>定位元素
Status compare(Elemtype *p, Elemtype &e)
{
if (*p == e) return 1;
else return 0;
}
Status locateElem(SqList L, Elemtype e,Status(*compare)(Elemtype,Elemtype))
{
int *p = L.elem;
int i = 1;
while (i <= L.length && !compare(*p++,e))
{
i++;
}
if (i <= L.length) return i;
else return 0;
}
9.顺序表—>在第i个之前,插入一个数据元素
int InsertElem(SqList &L,int i,Elemtype e)
{
if (i < 1 || i > L.length + 1) return ERROR;
if (L.length == MAXSIZE) return ERROR;
for (int x = L.length - 1; x >= i-1; x--)
{
L.elem[x + 1] = L.elem[x];
}
L.elem[i - 1] = e;
++L.length;
return OK;
}
10.顺序表—>删除第i个元素
Status DeleteElem(SqList& L, int i, Elemtype e)
{
if ((i < 1) || (i > L.length)) return ERROR;
e = L.elem[i - 1];
for (int x = i; x <= L.length; x++)
{
L.elem[x-1] = L.elem[x];
}
--L.length;
return OK;
}
实践才能检验自己的知识,这些代码一定要自己敲一遍!!!,否则你很难真正把握它。