閱讀以下說明和C 函數(shù),填補(bǔ)函數(shù)中的空缺,將解答填入答題紙的對應(yīng)欄內(nèi)。
【說明】
簡單隊列是符合先進(jìn)先出規(guī)則的數(shù)據(jù)結(jié)構(gòu),下面用不含有頭結(jié)點的單向循環(huán)鏈表表示簡單隊列。
函數(shù)EnQueue(Queue *Q,KeyType new_elem) 的功能是將元素new_elem加入隊尾。
函數(shù)DnQueue(Queue *Q,KeyType *elem)的功能使將非空隊列的隊頭元素出隊(從隊列中刪除),并通過參數(shù)帶回剛出隊的元素。
用單向循環(huán)鏈表表示的隊列如圖 4-1 所示。
圖4-1 單向循環(huán)鏈表表示的隊列示意圖
隊列及鏈表結(jié)點等相關(guān)類型定義如下:
enum {ERROR, OK};
typedef int KeyType;
typedef struct QNode﹛
KeyType data;
Struct QNode*next;
﹜QNode,*LinkQueue;
Typedef struct﹛
int size;
Link:Queue rear;
}Queue;
【C函數(shù)】
int EnQueue(Queue*Q,KeyType new_elem)
﹛ //元素new_elem 入隊列
QNode*p;
P=(QNode*)malloc(sizeof(QNode));
if(!p)
return ERROR;
P->data=new_elem;
if(Q->rear)﹛
P->next=Q->rear->next;
( 1 );
﹜
else
P->next=p;
﹙ 2 ﹚;
Q->size++;
return OK;
﹜
int DeQueue(Queue*Q,KeyType*elem)
﹛ //出隊列
QNode*p;
If(0==q->size) //是空隊列
Return ERROR;
P=( 3 ); //令p指向隊頭元素結(jié)點
*elem =p->data;
q->rear->next=( 4 ); //將隊列元素結(jié)點從鏈表中去除
if(( 5 )) //被刪除的隊頭結(jié)點是隊列中唯一結(jié)點
q->rear=NULL; //變成空隊列
free(p);
q->size--;
return OK;
﹜