考研数据结构第二章线性表顺序代码实现
1.初始化链表
#define InitSize 50
#define OVERFLOW 0
#define OK 1
int InitSqList(SqList &L){
L.data = (ElemType *)malloc(sizeof(ElemType)*InitSize);
if(!L.data)
exit(OVERFLOW);
L.MaxSize = InitSize;
L.length = 0;
return OK;
}
2.插入操作
#define ERROR 0
int ListInsert(SqList &L,int i,ElemType e){
if(i<1||i>L.length+1)
return ERROR;
if(L.length>L.MaxSize)
return ERROR;
for(int j=L.length;j>=i;j--)
L.data[j]=L.data[j-1];
L.data[i-1]=e;
L.length++;
return OK;
}
3.删除操作
int ListDelete(SqList &L,int i,ElemType &e){
if(i<1||i>L.length)
return ERROR;
e = L.data[i-1];
for(int j=i;j<L.length;j++)
L.data[j-1]=L.data[j];
L.length--;
return OK;
}
4.获取元素
int GetElem(SqList &L,int i,ElemType &e){
if(i<1||i>L.length-1)
return ERROR;
e = L.data[i-1];
return OK;
}
5.按值查找
int LocateElem(SqList L,ElemType e){
for(int i=0;i<L.length;i++)
if(L.data[i]==e)
return i+i;
return 0;
}
6.销毁释放顺序表
int DestroyList(SqList &L){
if(L.data)
free(L.data);
L.length = 0;
L.MaxSize = 0;
return 0;
}
7.清空顺序表
int ClearList(SqList &L){
L.length=0;
return OK;
}
8.获取顺序表长度
int GetLength(SqList L){
return L.length;
}
9.判断顺序表是否为空
int Empty(SqList L){
if(L.length==0)
return 1;
else
return 0;
}
10.输出操作
void PrintList(Sqlist L){
int i;
for(i=0;i<L.length;i++){
printf("%d",L.data[i]);
}
}
线性表顺序代码实现完整代码
#include<iostream>
#include<stdlib.h>
using namespace std;
typedef int ElemType;
typedef struct{
ElemType *data;
int length,MaxSize;
}SqList;
#define InitSize 50
#define OVERFLOW 0
#define OK 1
int InitSqList(SqList &L){
L.data = (ElemType *)malloc(sizeof(ElemType)*InitSize);
if(!L.data)
exit(OVERFLOW);
L.MaxSize = InitSize;
L.length = 0;
return OK;
}
#define ERROR 0
int ListInsert(SqList &L,int i,ElemType e){
if(i<1||i>L.length+1)
return ERROR;
if(L.length>L.MaxSize)
return ERROR;
for(int j=L.length;j>=i;j--)
L.data[j]=L.data[j-1];
L.data[i-1]=e;
L.length++;
return OK;
}
int ListDelete(SqList &L,int i,ElemType &e){
if(i<1||i>L.length)
return ERROR;
e = L.data[i-1];
for(int j=i;j<L.length;j++)
L.data[j-1]=L.data[j];
L.length--;
return OK;
}
int GetElem(SqList &L,int i,ElemType &e){
if(i<1||i>L.length-1)
return ERROR;
e = L.data[i-1];
return OK;
}
int LocateElem(SqList L,ElemType e){
for(int i=0;i<L.length;i++)
if(L.data[i]==e)
return i+i;
return 0;
}
int DestroyList(SqList &L){
if(L.data)
free(L.data);
L.length = 0;
L.MaxSize = 0;
return 0;
}
int ClearList(SqList &L){
L.length=0;
return OK;
}
int GetLength(SqList L){
return L.length;
}
int Empty(SqList L){
if(L.length==0)
return 1;
else
return 0;
}
void PrintList(Sqlist L){
int i;
for(i=0;i<L.length;i++){
printf("%d",L.data[i]);
}
}
int main(){
return 0;
}