(1)创建队列,将asdfghjkl依次入队。代码及注释
(2)将队列asdfghjkl依次出队。代码及注释
(3)编程实现创建一个最多6个元素的循环队列,将ABCDEF依次入队,判断循环队列是否队满。代码及注释
2条回答 默认 最新
- qfl_sdu 2022-05-29 09:53关注
(1)和(2)是一个代码,(3)在(1)的基础上有一些修改。
(1)和(2)运行结果及代码:#include <iostream> using namespace std; #define MAXLEN (int)20 typedef char elementtype; //队列先进先出 typedef struct { elementtype* element; int cur; int tail; }SQueue; //初始化栈 void InitStack_sq(SQueue &s) { int i=0; s.element = new elementtype[MAXLEN]; s.cur = 0; s.tail = 0; } //判断队列是否为空 int isEmpty_sq(SQueue s) { if(s.tail ==0 || s.cur == s.tail) return 1; else return 0; } //判断是否队满 int isFull_sq(SQueue s) { if(s.tail == MAXLEN) return 1; else return 0; } //取队列元素 int GetTop_sq(SQueue &s,elementtype& x) { if(isEmpty_sq(s)) return 0; x = s.element[s.cur]; return 1; } //入队 int Push_sq(SQueue &s,elementtype x) { if(isFull_sq(s)) return 0; //插入队列 s.element[s.tail] = x; s.tail++; return 1; } //出队 int Pop_sq(SQueue& s,elementtype& x) { if(isEmpty_sq(s)) return 0; x = s.element[s.cur]; s.cur++; return 1; } //遍历队列元素 void showAll(SQueue s) { cout <<"队列元素:"; for(int i=s.cur;i<s.tail;i++) { cout << (char)s.element[i]; } cout << endl; } int main() { SQueue s; InitStack_sq(s); //初始化队列 //asdfghjkl依次入队 Push_sq(s,'a'); Push_sq(s,'s'); Push_sq(s,'d'); Push_sq(s,'f'); Push_sq(s,'g'); Push_sq(s,'h'); Push_sq(s,'k'); Push_sq(s,'l'); //显示队列元素 showAll(s); elementtype x; //依次出队 cout <<"出队:"; while(!isEmpty_sq(s)) { Pop_sq(s,x); cout <<(char)x; } cout << endl; return 0; }
(3)运行结果:
代码:
#include <iostream> using namespace std; #define MAXLEN (int)6 typedef char elementtype; //队列先进先出 typedef struct { elementtype* element; int cur; int tail; }SQueue; //初始化栈 void InitStack_sq(SQueue &s) { int i=0; s.element = new elementtype[MAXLEN]; for(;i<MAXLEN;i++) s.element[i] = 0; s.cur = 0; s.tail = 0; } //判断队列是否为空 int isEmpty_sq(SQueue s) { if(s.tail ==0 || s.cur == s.tail) return 1; else return 0; } //判断是否队满 int isFull_sq(SQueue s) { if(s.tail == MAXLEN) return 1; else return 0; } //取队列元素 int GetTop_sq(SQueue &s,elementtype& x) { if(isEmpty_sq(s)) return 0; x = s.element[s.cur]; return 1; } //入队 int Push_sq(SQueue &s,elementtype x) { if(isFull_sq(s)) s.tail = 0; //插入队列 s.element[s.tail] = x; s.tail++; return 1; } //出队 int Pop_sq(SQueue& s,elementtype& x) { if(isEmpty_sq(s)) return 0; x = s.element[s.cur]; s.cur++; return 1; } //遍历队列元素 void showAll(SQueue s) { cout <<"循环队列元素:"; for(int i=0;i<MAXLEN;i++) { if(s.element[i] != '\0') cout << (char)s.element[i]; } cout << endl; } int main() { SQueue s; InitStack_sq(s); //初始化队列 //ABCDEF入队 Push_sq(s,'A'); Push_sq(s,'B'); Push_sq(s,'C'); Push_sq(s,'D'); Push_sq(s,'E'); Push_sq(s,'F'); //显示队列元素 showAll(s); //判断是否队满 if(isFull_sq(s)) cout <<"此时队满"<<endl; else cout <<"队列未满"<<endl; return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录