資源簡介
1. 經過以下棧運算后,x的值是( )。
InitStack(s); Push(s,'a'); Push(s,'b');
Pop(s,x); Gettop(s,x);
A. a B. b C. 1 D. 0
2.循環隊列存儲在數組A[0..m]中,則入隊時的操作為( )。
A.rear=rear+1
B. rear=(rear+1) mod(m-1)
C. rear=(rear+1)mod m
D. rear=(rear+1) mod(m+1)
3. 棧和隊列的共同點是( )。
A.都是先進先出 B.都是先進后出
C.只允許在端點處插入和刪除元素 D.沒有共同點
4. 若用一個大小為6的數組來實現循環隊列,且當 rear 和 front 的值分別為 0 和 3。當從隊列中刪除一個元素,再插入兩個元素后,rear 和 front 的值分別為:( )。
A.1 和 5 B.2 和 4
C.4 和 2 D.5 和 1
5. 程序填順序循環隊列的類型定義如下:
typedef int ET;
typedef struct{ ET *base;
int Front;
int Rear;
int Size;
}Queue;
Queue Q;
隊列 Q 是否“滿”的條件判斷為( C )。
A.(Q.Front+1)=Q.Rear
B.Q.Front=(Q.Rear+1)
C.Q.Front=(Q.Rear+1)% Q.size
D.(Q.Front+1) % Q.Size=(Q.Rear+1)% Q.size
6. 若進棧序列為1,2,3,4,進棧過程中可以出棧,則( )不可能是一個出棧序列。
A.3,4,2,1 B.2,4,3,1
C.1,4,2,3 D.3,2,1,4
7. 向順序存儲的循環隊列 Q 中插入新元素的過程分為三步: ( )。
A.進行隊列是否空的判斷,存入新元素,移動隊尾指針
B.進行隊列是否滿的判斷,移動隊尾指針,存入新元素
C.進行隊列是否空的判斷,移動隊尾指針,存入新元素
D.進行隊列是否滿的判斷,存入新元素,移動隊尾指針
8. 關于棧和隊列,( )說法不妥。
A. 棧是后進先出表 B. 隊列是先進先出表
C. 遞歸函數在執行時用到棧 D. 隊列非常適用于表達式求值的算符優先法
9. 若用數組S[0..m]作為兩個棧S1和S2的共同存儲結構,對任何一個棧,只有當S全滿時才不能作入棧操作。為這兩個棧分配空間的最佳方案是( )。
A.S1的棧底位置為0,S2的棧底位置為m
B.S1的棧底位置為0,S2的棧底位置為m/2
C.S1的棧底位置為1,S2的棧底位置為m
D.S1的棧底位置為1,S2的棧底位置為m/2
二、程序填空題(沒特別標注分數的空的為3分,共 23 分)。
1.下面的算法是將一個整數e壓入堆棧S,請在空格處填上適當的語句實現該操作。
typedef struct{
int *base;
int *top;
int stacksize;
}SqStack;
int Push(SqStack S,int e)
{
if ( S.top- S.base>= S.stacksize )
{ S.base=(int *) realloc(S.base,(S.stacksize+1)*sizeof(int));
if( !S.base )
{
printf(“Not Enough Memory!\n”);
return(0);
代碼片段和文件信息
- 上一篇:一元多項式的運算加減乘終極版
- 下一篇:C語言ATM機
評論
共有 條評論