摘要:希賽網為大家整理了2017上半年程序員考試案例分析真題,以下為第四部分。試題四(共15分)閱讀以下說明和C函數,填補函數中的空缺,將解答填入答題紙的對應欄內?!菊f明】
希賽網為大家整理了2017上半年程序員考試案例分析真題,以下為第四部分。
試題四(共15分)
閱讀以下說明和C函數,填補函數中的空缺,將解答填入答題紙的對應欄內。
【說明】
簡單隊列是符合先進先出規(guī)則的數據結構,下面用不含有頭結點的單向循環(huán)鏈表表示簡單隊列。
函數enqueue(queue*q,KeyType new_elem)的功能是將元素new_elem加入隊尾。
函數Dnqueue(queue*q,KeyType*elem)的功能使將非空隊列的隊頭元素出隊(從隊列中刪除),并通過參數帶回剛出隊的元素。用單向循環(huán)鏈表表示的隊列如圖4-1所示。
圖4-1單向循環(huá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函數】
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;
();
﹜
else
P->next=p;
﹙﹚;
q->size++;
return OK;
﹜
int Dequeue(queue*q,KeyType*elem)
﹛//出隊列
qNode*p;
if(0==q->size)//是空隊列
return errOr;
P=();//令p指向隊頭元素結點
*elem=p->data;
q->rear->next=();//將隊列元素結點從鏈表中去除
if(())//被刪除的隊頭結點是隊列中結點
q->rear=NULL//變成空隊列
free(p);
q->size--;
return OK;
﹜
>>>>返回目錄:2017上半年程序員考試案例分析真題(匯總)
>>>>進入估分:2017上半年軟考分數早知道,在線估分+真題解析
>>>>點擊查看:2017上半年程序員上午真題答案和解析
軟考備考資料免費領取
去領取