[題目分析] 用一維數組 v[M]實現循環隊列其中M是隊列長度設隊頭指針 front和隊尾指針rear約定front指向隊頭元素的前一位置rear指向隊尾元素定義front=rear時為隊空(rear+)%m=front 為隊滿約定隊頭端入隊向下標小的方向發展隊尾端入隊向下標大的方向發展
()#define M 隊列可能達到的最大長度
typedef struct
{ elemtp data[M];
int frontrear;
} cycqueue;
()elemtp delqueue ( cycqueue Q)
//Q是如上定義的循環隊列本算法實現從隊尾刪除若刪除成功返回被刪除元素否則給出出錯信息
{ if (Qfront==Qrear) {printf(隊列空); exit();}
Qrear=(Qrear+M)%M; //修改隊尾指針
return(Qdata[(Qrear++M)%M]); //返回出隊元素
}//從隊尾刪除算法結束
void enqueue (cycqueue Q elemtp x)
// Q是順序存儲的循環隊列本算法實現從隊頭插入元素x
{if (Qrear==(Qfront+M)%M) {printf(隊滿; exit();)
Qdata[Qfront]=x; //x 入隊列
Qfront=(Qfront+M)%M; //修改隊頭指針
}// 結束從隊頭插入算法
參見
[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []
From:http://tw.wingwit.com/Article/program/sjjg/201311/22698.html