int i;
elemtype elem;
i = 0;
printf("please input some elem : \n");
do {
scanf("%d", &elem);
if (elem == -1)
break;
L -> elem[i++] = elem;
L -> length++;
} while(1);
}
void destroy_list(sqlist *L)
{
//操作结果:销毁线性表L
free(L -> elem);
L -> length = 0;
L -> listsize = 0;
}
void clear_list(sqlist *L)
{
//操作结果:将L重置为空表
L -> length = 0;
}
int list_empty(sqlist *L)
{
//操作结果:若L为空表则返回TRUE 否则返回FALSE
if (L -> length)
return TRUE;
else
return FALSE;
}
int list_length(sqlist *L)
{
//操作结果:返回L中数据元素的个数
return L -> length;
}
void get_elem(sqlist *L, int i, elemtype *e)
{
//操作结果:用e返回L中第i个数据元素的值
if (L -> length == 0) {
printf("error : sqlist\n");
return;
}
if (i < 1 || i > L -> length) {
printf("error : i\n");
return;
}
*e = L -> elem[i - 1];
}
int i = 0;
if (L -> length == 0) {
printf("error : sqlist\n");
return ERROR;
}
while (i < L -> length - 1) {
if (cur_e == L -> elem) {
*pre_e = L -> elem[i + 1];
return OK;
}
i++;
}
return ERROR;
}
void list_insert(sqlist *L, int i, elemtype e)
{
//操作结果:在L中第i个位置之前插入新的数据元素e L的长度加1
int j;
if (i < 1 || i > L -> length + 1) {
printf("error : i\n");
return;
}
j = L -> length;
while (j >= i) {
L -> elem[j] = L -> elem[j - 1];
j--;
}
L -> elem[j] = e;
L -> length++;
}
void list_delete(sqlist *L, int i, elemtype *e)
{
//操作结果:删除L的第i个数据元素 并用e返回其值 L的长度减1
if (i < 1 || i > L -> length) {
printf("error : i\n");
return;
}
*e = L -> elem[i - 1];
while (i < L -> length) {
L -> elem[i - 1] = L -> elem;
i++;
}
L -> length--;
}
int list_search(sqlist *L, elemtype e)
{
//操作结果:查找元素e 若找到则返回元素e的位置 否则返回-1
int i;
for (i = 0; i < L -> length; i++)
if (L -> elem == e)
return i + 1;
return -1;
}
void list_travel(sqlist *L)
{
//操作结果:依次输出线性表L中的元素
int i;
for (i = 0; i < L -> length; i++)
printf("%d ", L -> elem);
putchar('\n');
}