线性表的顺序存储结构自写代码.doc
文本预览下载声明
#includestdio.h
#includestdlib.h
// 函ˉ数簓结á果?状痢?态?代洙?码?
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define NULL 0
#define INFEASIBLE -1
#define LIST_INIT_SIZE 100 // 线?性?表括?存?储洹?空?间?的?初?始?分?配?量?
#define LISTINCREMENT 10 // 线?性?表括?存?储洹?空?间?的?分?配?增?量?
#define OVERFLOW -2// 在úmath.h中D已?定¨义?OVERFLOW的?值μ为a,请?注痢?意癮
typedef int Status; // Status是?函ˉ数簓的?类え?型í,其?值μ是?函ˉ数簓结á果?状痢?态?代洙?码?
typedef int ElemType;
typedef struct
{
ElemType * elem; //存?储洹?空?间?基ù址·
int length; //当獭?前°长¤度è
int listsize; //当獭?前°分?配?的?存?储洹?容╕量?
}SqList;
static SqList L; //定¨义?全?局?变?量?
static ElemType element;
//------基ù本?函ˉ数簓的?原-型í说μ明÷------
Status InitList(SqList L); //构1造ì一?个?空?非?的?线?性?表括?
Status DestroyList(SqList L); //销ú毁ù线?性?表括?
Status ClearList(SqList L); //清?空?线?性?表括?
Status ListEmpty(SqList L); //判D断?线?性?表括?是?否?为a空?
int ListLength(SqList L); //返う?回?线?性?表括?中D的?元a素?的?个?数簓
Status GetElem(SqList L,int i); //用?e返う?回?线?性?表括?中D的?第台瞚个?数簓据Y元a素?的?值μ
Status LocateElem(SqList L,ElemType e); //定¨位?及°查é找ò
Status PriorElem(SqList L,ElemType cur_e,ElemType *pre_e); //返う?回?数簓据Y的?前°驱y
Status NextElem(SqList L,ElemType cur_e,ElemType *next_e); //返う?回?数簓据Y的?后ó继ì
Status ListInsert(SqList L,int i,ElemType e); //插?入?元a素?
Status ListDelete(SqList L,int i,ElemType e); //删?除y元a素?
Status ListTraverse(SqList L,int i,ElemType e); //对?线?性?表括?中D的?每?个?数簓据Y进?行D函ˉ数簓visit的?访?问ê
//-?-?-?-?-?-?基ù本?算?法ぁ?的?操ù作痢?描è述?-?-?-?-?-?-?
Status InitList(SqList L)
{
L.elem = (ElemType *)malloc(LIST_INIT_SIZE *sizeof(ElemType));
if (!L.elem == NULL)
exit (OVERFLOW);
L.length = 0;
L.listsize = LIST_INIT_SIZE;
return OK;
} //InitList
Status DestroyList(SqList L)
{
if (L.elem == NULL)
return ERROR;
else
free(L.elem);
return OK;
} //DestroyList
Status ClearList(SqList L)
{
if (L.elem == NULL)
exit(ERROR);
int i;
ElemType *p_elem = L.elem;
for (i = 0; i L.length; i++)
{
*L.elem = NULL;
L.elem ++;
}
L.elem = p_elem;
return OK;
} //ClearList
Sta
显示全部