使用两个辅助的队列和非数组变量设计一个算法以使队列中的元素有序
来源:互联网 发布:知乎咖啡的好处与坏处 编辑:程序博客网 时间:2024/06/05 04:35
/*使用两个辅助的队列和非数组变量设计一个算法以使队列中的元素有序*/#include<stdio.h>#include<stdlib.h>#include<time.h>#define OK 1#define ERROR 0#define MAXSIZE 20typedef int QElemType;typedef int Status;typedef struct { QElemType data[MAXSIZE]; int front; int rear;}SqQueue;//循环队列的初始化Status InitSqQueue(SqQueue * S){ S->front=0; S->rear=0; return OK;}//循环队列的建立Status create(SqQueue * S,int n){ srand((unsigned)time(NULL)); for(int i=0;i<n;i++) { S->data[i]=rand()%100; S->rear++; } return OK;}//循环队列的入队Status EnQueue(SqQueue * S,QElemType e){ S->data[S->rear]=e; S->rear=(S->rear+1)%MAXSIZE; return OK;}//循环队列的出队Status DeQueue(SqQueue * S,QElemType * e){ *e=S->data[S->front]; S->front=(S->front+1)%MAXSIZE; return OK;}//循环队列的长度Status Length(SqQueue * S){ return (S->rear-S->front+MAXSIZE)%MAXSIZE;}//输出void print(SqQueue * S){ printf("输出元素:\n"); int length=(S->rear-S->front+MAXSIZE)%MAXSIZE; for(int i=S->front;i<length;i++) { printf("%d ",S->data[i]); } printf("\n");}//找出最大元素的下标Status GetMax(SqQueue * S){ int length=Length(S); int temp=S->front; for(int i=1;i<length;i++) { if(S->data[temp]<S->data[i]) { temp=i; } } return temp;}//将最大元素放入队列Q,其余的放入队列LStatus GetMaxOut(SqQueue * S,SqQueue * Q,SqQueue * L){ QElemType DeElem; int length=Length(S); QElemType MaxIndex=GetMax(S); EnQueue(Q,S->data[MaxIndex]); for(int i=0;i<length;i++) { if(i==MaxIndex) { DeQueue(S,&DeElem); continue; } DeQueue(S,&DeElem); EnQueue(L,DeElem); } InitSqQueue(S); return OK;}//排序Status Sort(SqQueue * S,SqQueue * Q,SqQueue * L){ int length=Length(S); for(int i=0;i<length;i++) { if(i%2==0) GetMaxOut(S,Q,L); else GetMaxOut(L,Q,S); } return OK;}//将队列Q的元素出队,将队列Q的元素入队原先的队列SStatus PutBackS(SqQueue * Q,SqQueue * S){ QElemType DeElem; int length=Length(Q); for(int i=0;i<length;i++) { DeQueue(Q,&DeElem); EnQueue(S,DeElem); } return OK;}int main(){ SqQueue S,Q,L; int ElemNumber; InitSqQueue(&S); InitSqQueue(&Q); InitSqQueue(&L); printf("输入元素个数:\n"); scanf("%d",&ElemNumber); create(&S,ElemNumber); print(&S); Sort(&S,&Q,&L); PutBackS(&Q,&S); print(&S); return 0;}
0 0
- 使用两个辅助的队列和非数组变量设计一个算法以使队列中的元素有序
- 使用一个辅助的队列和非数组变量设计一个算法以使队列中的元素有序
- 设ha和hb分别是两个带头节点的费递减有序单链表的表头指针,设计以算法,将将两个有序链表合成一个非递减的有序单链表,该程序以以前发表的博客中的链表中的区别在与该立案表带有头结点
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。队列中的元素为int类型。
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。队列中的元素为int类
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
- 用两个栈来实现一个队列完成队列的Push和Pop操作 队列中的元素为int类型。
- 递归实现:1 + 1/2 - 1/3 + 1/4 - 1/5.......
- 第十一周项目0 是春哥啊
- Android开发秘籍学习笔记(五)
- 旋转矩阵
- SGU 102. Coprimes
- 使用两个辅助的队列和非数组变量设计一个算法以使队列中的元素有序
- 《C#高级编程》【第三章】对象和类型 -- 学习笔记
- DuiVision开发教程(1)-创建DuiVision工程
- IOS NSUserDefaults-轻量级本地数据存储
- C#树结构操作逻辑整理
- uml精粹——5.类图(高级概念)
- TCP粘包
- 自定义UI-TextView实现文本自动滚动显示
- 字母大小写分类排序输出