实验一 顺序存储结构线性表的插入与删除
下面是顺序存储结构线性表的插入与删除算法:
int InsertSList(L[], n,i, x )
{ /* 在顺序存储结构的线性表L中第i个元素之前插人元素x,n为表长 */ if ((i<1) or (i>n+1)) {
printf(“参数非法”); return ( 0 ); } else
{ for (j = n; j≥i; j-- ) L[j+1] ? L[j]; a[j] ? x; n ? n + 1; return ( 1 ); } }
――――――――――――――――――――――――――――――――――― ElemType DeleteSList(L[], n, i)
{ /* 在顺序存储结构的线性表L中删除第i个元素。 */ if (i<1 or i>n) {
printf(“参数非法”); return ( 0 ); } else {
y ? L[i];
for (j=i+1; j 设线性表中元素类型为整型,且L=(10,25,52,09,31,88,26,44,50,78),请把上述算法用C或C++实现,并验证程序的正确性。程序结构提示如下: #include “stdio.h” 函数原型 main() { int L[100], n, temp; 线性表初始化; PrintList( ?? ); InsertSList( ?? ); PrintList( ?? ); temp = DeleteSList( ?? ); PrintList( ?? ); ?? } int InsertSList( ?? ) { ?? } ElemType DeleteSList( ?? ) { ?? } void PrintList( ?? ) { ?? } 实验二 堆栈操作 仔细阅读下面的堆栈操作算法: int PushStack(S[], top, bottom, x) { if (top ≥ SMAX) { printf(\; return ( 0 ); } else { S[top] ? x; top ? top + 1; return ( 1 ); } } ――――――――――――――――――――――――――――― ElemType PopStack(S[], top, bottom) { if (top = 0) { printf(\; return ( 0 ); } else { top ? top - 1; return (S[top]); } } 写一程序实现上面的堆栈及其算法,并反复验证堆栈的操作,给出测试结果。 实验三 循环队列的实现 仔细阅读下面的算法,并用程序实现之。 int InsertCQueue(CQ[], front, rear, x) { if ((rear+l) % QMAX) = front) { printf(“队列满,不能插入”); return ( 0 ); } else { rear ? (rear + l) % QMAX; CQ[rear] ? x; return ( 1 ); } } ―――――――――――――――――――――――――――――― ElemType DeleteCQueue(CQ[], front, rear) { if (front = rear) { printf(“队列已空,不能删除”); return ( 0 ); } front ? (front + l) % QMAX; return (CQ[front]); }