数据结构线性表问题

2024-11-25 02:44:02
推荐回答(1个)
回答1:

伪代码,除了书本上的,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

}

}
}