#ifndef SQLIST_H
#define SQLIST_H
#include
#include
#include
#define LIST_INIT_SIZE 50
#include "SqList.h"
//顺序表操作函数的实现
typedef int ElemType;
typedef struct
{ElemType *elem;//存放顺序表元素,教材中使用了指针来表示顺序表的基地址,允许扩展
int listsize;//在本处代码中使用了基本数组data,不允许扩展
int length;//存放顺序表的长度
} SqList;
int InitList_Sq(SqList &L)/*初始化线性表*/
{
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L.elem) return(-2);
L.length=0;
L.listsize=LIST_INIT_SIZE;
return 1;
}
int DestoryList_Sq(SqList &L)
{
if(L.elem!=NULL)
free(L.elem);
return 1;
}
int ListLength_Sq(SqList L)/*求线性表长度*/
{
return L.length;
}
int GetElem_Sq(SqList L,int i,ElemType &e)/*求线性表中第i个元素*/
{
if (i<1 || i>L.length)/*无效的i值*/
return 0;
else
{
e=L.elem[i-1];
return 1;
}
}
int LocateElem_Sq(SqList L,ElemType e)/*按值查找*/
{
int i=0;
while (L.elem[i]!=e)/*查找值为x的第1个结点*/
i++;
if (i>L.length)
return(0);/*未找到*/
else
return(i+1);
}
int ListInsert_Sq(SqList &L,ElemType e,int i) /*插入元素*/
{
int j;
if (i<1 || i>L.length+1)/*无效的参数i*/
return 0;
for (j=L.length;j>i;j--)/*将位置为i的结点及之后的结点后移*/
L.elem[j]=L.elem[j-1];
L.elem[i-1]=e; /*在位置i处放入x*/
L.length++; /*线性表长度增1*/
return 1;
}
int ListDelete_Sq(SqList &L,ElemType &e,int i)/*删除元素*/
{
int j;
if (i<1 || i>L.length) /*无效的参数i*/
return 0;
j=i-1;
e=L.elem[i-1];
for (j=i;jL.elem[j-1]=L.elem[j];
L.length--; /*线性表长度减1*/
return 1;
}
void ListTraverse_Sq(SqList L) /*输出线性表*/
{
int i;
for (i=1;i<=L.length;i++)
printf("%d ",L.elem[i-1]);
printf("\n");
}
#endif