使用一个辅助的队列和非数组变量设计一个算法以使队列中的元素有序
来源:互联网 发布:onekeytools mac 编辑:程序博客网 时间:2024/06/05 11:14
/*使用一个辅助的队列和非数组变量设计一个算法以使队列中的元素有序*/#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=S->front+1;i<length+S->front;i++)//关键句,重点是加上S->front!!!!! { if(S->data[temp]<S->data[i]) { temp=i; } } return temp;}//把最大元素和front(data[0])元素进行交换,然后出队,入队进新的队列里Status SwapMax(SqQueue * S,SqQueue * L){ QElemType DeElem; int temp; int Index=GetMax(S); temp=S->data[Index]; S->data[Index]=S->data[S->front]; S->data[S->front]=temp; DeQueue(S,&DeElem); EnQueue(L,DeElem); return OK;}//排序Status Sort(SqQueue * S,SqQueue * L){ QElemType DeElem; int length=Length(S); for(int i=0;i<length;i++) { SwapMax(S,L); } InitSqQueue(S); //这一步是重新初始化队列S(或者完善初始化函数) for(int j=0;j<length;j++) { DeQueue(L,&DeElem); EnQueue(S,DeElem); } return OK;}int main(){ SqQueue S,L; int ElemNumber; InitSqQueue(&S); InitSqQueue(&L); printf("输入元素个数:\n"); scanf("%d",&ElemNumber); create(&S,ElemNumber); print(&S); Sort(&S,&L); print(&S); return 0;}
0 0
- 使用一个辅助的队列和非数组变量设计一个算法以使队列中的元素有序
- 使用两个辅助的队列和非数组变量设计一个算法以使队列中的元素有序
- 将栈S中的元素逆置,使用额外的一个栈L和非数组变量
- 用两个栈来实现一个队列,完成队列的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类型。
- 一个女人13小时内拍的两张照片,所有人看完都沉默了~
- 新浪微博随便看看
- ADB server didn't ACK
- 将栈S1中的元素复制到栈S2中一个非数组变量
- 第十周项目二(1):职员有薪水了(string类)
- 使用一个辅助的队列和非数组变量设计一个算法以使队列中的元素有序
- 非递归的中序树遍历算法
- 使用SSH做SOCKS代理
- CentOS更新国内yum源
- 二维幻方
- 开园第一篇 - 论移动开发环境 IOS与Android的差异
- 用栈模拟斐波那契数列,实现非递归的过程
- 利用avalon 实现一个简单的成绩单
- Linux内核源代码情景分析-系统初始化