以下为线性表的基本操作:
#include<iostream>
using namespace std;
#define MAXSIZE 100
#define OK 1
#define ERROR 0
typedef int Status;
typedef int ElemType;
typedef struct
{
ElemType *data;
int length;
}List;
Status InitList(List &L)//初始化线性表
{
L.data=new ElemType[MAXSIZE];
if(L.data==NULL)
return ERROR;
L.length=0;
return OK;
}
int Length(List L)//返回线性表的长度
{
return L.length;
}
Status LocateElem(List L,ElemType e)//查找线性表中是否有e
{
int i;
for(i=0;i<L.length;i++)
{
if(L.data[i]==e)
return OK;
}
return ERROR;
}
ElemType GetElem(List L,int i)//查找线性表中第i个元素的内容
{
if(i<0||i>L.length)
{
cout<<"查找位置非法!"<<endl;
return -1;
}
return L.data[i-1];
}
Status ListInsert(List &L,int i,ElemType e)//在线性表第i个位置插入元素e
{
if(i<0||i>L.length+1)
{
cout<<"插入的位置非法!"<<endl;
return ERROR;
}
if(L.length==MAXSIZE)
{
cout<<"链表已经满了无法插入!"<<endl;
return ERROR;
}
int j;
for(j=L.length;j<i-1;j--)
{
L.data[j]=L.data[j-1];
}
L.data[i]=e;
L.length++;
return OK;
}
Status ListDelete(List &L,int i,ElemType &e)//删除线性表中第i个元素并将删除的元素赋值给e
{
if(i<0||i>L.length)
{
cout<<"删除的位置非法!"<<endl;
return ERROR;
}
int j;
e=L.data[i-1];
for(j=i-1;j<L.length-1;j++)
{
L.data[j]=L.data[j+1];
}
L.length--;
return OK;
}
Status PrintList(List L)//输出线性表中的元素
{
int i;
for(i=0;i<L.length;i++)
cout<<L.data[i]<<" ";
cout<<endl;
return OK;
}
Status Empty(List L)//线性表表判空
{
if(L.length)
return ERROR;
return OK;
}
Status DestroyList(List &L)//销毁操作
{
delete L.data;
if(!L.data)
return OK;
return ERROR;
}
main()
{
}