顺序表
#include<stdio.h>
#include<stdlib.h>
#define ok 1
#define error 0
#define list_init_size 100
#define listincrement 10
typedef int status;
typedef int elemtype;
typedef struct {
elemtype *elem;
int length;
int listsize;
}sqlist;
status initlist_sq(sqlist &l)
{
l.elem = (elemtype*)malloc(list_init_size*sizeof(elemtype));
if (!l.elem)
return error;
l.length = 0;
l.listsize = list_init_size;
return ok;
}
status crealist_sq(sqlist &l, int n)
{
if (n<0 || n>l.listsize)
return error;
int i = 0;
for (i = 0; i < n; i++)
{
scanf("%d", &l.elem[i]);
l.length++;
}
return ok;
}
status listinsert_sq(sqlist &l, int i, elemtype e)
{
int j;
if (i<1 || i>l.length + 1)
return error;
if (l.length == l.listsize)
{
l.elem = (elemtype*)malloc(listincrement*sizeof(elemtype));
if (!l.elem) return error;
l.listsize = l.listsize + listincrement;
};
for (j = l.length - 1; j >= i - 1; j--)
l.elem[j + 1] = l.elem[j];
l.elem[i - 1] = e;
++l.length;
return ok;
}
status print_sq(sqlist l)
{
if (!l.elem)
return error;
int i = 0, j;
for (i = 0, j = 1; i <l.length; i++, j++)
printf("第%d个元素=%d\n", j, l.elem[i]);
return ok;
}
status listdelete_sq(sqlist &l, int i, elemtype &e)
{
int k;
if (i<1 || i>l.length)
return error;
e = l.elem[i - 1];
for (k = i - 1; k< l.length - 1; k++)
l.elem[k] = l.elem[k + 1];
l.length--;
return ok;
}
int locateelem_sq(sqlist l, elemtype e)
{
int i;
for (i = 0; i < l.length; i++)
{
if (l.elem[i] == e)
return (i + 1);
}
return error;
}
status listempty_sq(sqlist l)
{
if (l.length >0)
return error;
else
return ok;
}
status freelist_sq(sqlist &l)
{
if (!l.elem)
return error;
else
free(l.elem);
return ok;
}
status clearlist_sq(sqlist &l)
{
l.length = 0;
return ok;
}
status priorelem_sq(sqlist l, elemtype cur_e, elemtype &pre_e)
{
if (l.elem[0] == cur_e)
return error;
int i = 0;
for (i = 1; i < l.length; i++)
{
if (l.elem[i] == cur_e)
{
pre_e = l.elem[i - 1];
return ok;
}
}
return error;
}
status nextelem_sq(sqlist l, elemtype cur_e, elemtype &next_e)
{
if (l.elem[l.length - 1] == cur_e)
return error;
int i = 0;
for (i = 0; i < l.length - 1; i++)