新手修改自己的程序,不会改,快哭了。求解释啊
这是一个简单线性列表的实现#include<stdio.h>
#include<malloc.h>
#define LIST_INIT_SIZE 100
#define LISRINCREANMENT 10
#define true 1
#define false 0
#define OVERFLOW -2
#define ok 1
#define Error 0
typedef int ElemType;
typedef int statu ;
typedef struct
{
ElemType *elem;
int length ;
int Listsize;
}SqList;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}; Lode,LinkList;
SqList L;
statu InitList_Sq(SqList *L)/*构造一个空的线性列表*/
{
L->elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(L->elem==NULL)
{
printf("空间分配失败");
return OVERFLOW;
}
L->length=0;/*初始长度为0*/
L->Listsize=List_INIT_SIZE;/*初始存储容量*/
return ok;
}
statu ClearList_Sq(SqList *L)/*清空列表*/
{
L->length=0;
return ok;
}
statu ListEmpty_Sq(SqList *L)/*判定线性表是否为空*/
{
if(L->length==0)
{
return true;
}
else
return false;
}
statu ListLength_Sq(SqList *L)/*返回表长*/
{
return L->length;
}
statu ListInsert_Sq(SqList*L,int i;ElemType e)/*在顺序线性表中第i个位置插入新的元素e*/
{
if(i<1||i>L->length+1)
{
return error;
}
if(L->length>L->Listsize)
{
newbase=(ElemTYpe*)malloc(L->elem,(L->Listsize+LISRINCREMENT)*sizeof(ElemType));
if(!newbase)
{
exit(OVERFLOW);/*分配失败*/
}
L->elem=newbase;/*新基址*/
L->list+=LISTINCREMENT;/*增加存储容量*/
}
q=&(L->elem[i-1]);/*q为插入地址*/
for(p=&(L->elem[L->length-1]);p>=q;--p)
*(p+1)=*p;
*q=e;/*插入e*/
++L->length;/*表长加1*/
return ok;
}
statu ListDelet_Sq(SqList *L,int i;ElemType *e)/*删除第i个元素*/
{
if((i<1)||(i>L->length))/*i的值不合法*/
{
return ERROR;
}
p=&(L->elem[i<i]);/*p为被删除的元素*/
e=*p;/*p的元素赋给e*/
q=L->elem+L->length-1;/*表尾元素的位置*/
for(++p;p<=q,++p)
*(p-1)=*p;
--length;/*表长减1*/
return ok;
}
statu Getelem_L(LinkList L,int i,ElemType *e)
{
p=L->next;/*初始化,p纸箱第一个节点,j为计数器*/
i=1;
while(p&&j<1)/*顺指针向后查找,知道P指向第i个元素或P为空*/
{
p=p->next;
j++;
}
if(!P||j>i)
{
return Error;/*第i个元素不存在*/
}
e=p->data;/*取第i个元素*/
return ok;
}
statu PiorElem Sq_(L,cur_e,*pre_e)
{
p=GetElem(head i);
return (p->prior->Elem);
}
void main()
{
printf("\n\n");
for(;;)
{
printf("********************************************"\n);
printf("1 构造一个线性列表\n");
printf("2 清空列表\n");
printf("3 判断线性表是否为空 \n");
printf("4 返回表的长度\n");
printf("5 增加一个元素 插入第i个位置\n");
printf("6 删除地i个元素\n");
printf("7 获取列表中第i 个元素\n");
printf("8 查找前驱\n");
printf("**********************************************\n");
int a ;
scanf("%d",&a);
if(i<0||i>8)
{
printf("\n");
}
switch(a)
{
case(1):InitList_Sq(L);break;
case(2):ClearList_Sq(L);break;
case(3):ListEmpty_Sq(L);break;
case(4):ListLength_Sq(L);break;
case(5):ListInsert_Sq(L;break;
case(6):ListDelet_Sq(L);break;
case(7):Getelem-L(L);break;
case(8):PriorElem_Sq(L);break;
}
}
}