伪代码,除了书本上的,c语言不支持ListDelete_Sq(SqList&L,INT I&E)等操作,它应该通过指针,ListDelete_Sq(SqList * L,INT I * E)。
我改变了下面的代码。
#包括中
#包括是否
#包括
#定义OK 1
#定义错误0 BR />#定义LIST_INIT_SIZE 100
#定义LISTINCREMENT 10
#定义ElemType诠释
既定义溢出-1
typedef结构
{
> * ELEM;
int长度;
int LISTSIZE的;
} SqList;
InitList_Sq(SqList *长)
L-> ELEM =(ElemType *)malloc的(LIST_INIT_SIZE * sizeof(ElemType)的);
(L-> ELEM)出口(错误);
L->长度= 0;
> L-> LISTSIZE = LIST_INIT_SIZE;
返回OK;
}
Load_Sq(SqList * L)
{
INT I
(L->长度== 0)printf的(“列表是空的!”)/ /请填写空白
其他
{
的printf(“该清单为:“);
(I = 0; 长; + +,L-> ELEM + +)的printf(”%d的“,L - > ELEM)/ /请填写在空白
}
的printf(“\ N”);
返回OK;
}
ListInsert_Sq(SqList *长,诠释,)/ /第i个位置之前插入一个新的元素 -
{
* newbase,* P * Q;
((1)| (> L->长度+1))返回错误;
(L->长度> = L-> LISTSIZE)
newbase =(ElemType *)realloc的(L - > ELEM(L-> LISTSIZE + LISTINCREMENT)* sizeof(ElemType)的);
如果(newbase)出口(溢出);
L->; ELEM =;
- > LISTSIZE + = LISTINCREMENT;
}
q =&(L-> ELEM [I-1]);
(p值=&(L-> ELEM [L->长度-1]),P = Q - P)*(P +1)= * P;
* Q = E;
+ L->长度;
返回OK;
}
ListDelete_Sq(SqList * L,INT I * E)/ /删除第i个元素,和e返回其值
{
诠释*第* Q;
(( L->长度))返回错误
P =&(L-> ELEM [I-1])
* E = * P;
q = L-> ELEM + L->长度为1;
(+ P,P <= Q + + P)*( P-1)= P;
- L->长度;
返回OK;
}
()
{
> SqList T;
A,I;
ElemType E,X;
(InitList_Sq成功(&T)== OK)/ /判断是否创建的表的顺序 {
的printf(“列表创建一个序列。\ N”);}
(1)
的printf(“1:插入元素\ N2:删除元素\ N3:加载所有元素\ N0:退出\ n请选择:\ N“);,
scanf函数(”%D“,&a)款;
开关(A)
> {
案例1:scanf函数(“%D”,&x)的;
(ListInsert_Sq(&T,I,E)= OK)的printf(“插入错误! \ N“)/ /判断i的值是合法的,请填写在空白
其他的printf(”成功插入单元%d \ N“,X);
突破; BR />案例2:scanf函数(“为%d”,&I);
(ListDelete_Sq(&T,I,&E))的printf(“删除错误!\ N”)/ /判断值我是合法的,请填写在空白
其他的printf(“成功删除单元%d \ N,E);
打破;
的情况下3:Load_Sq的(&T );
打破;
情况下,0:1
}
}
}