c++数据结构快速排序用栈实现

问题描述

c++数据结构快速排序用栈实现

已知快速排序的部分代码如下,勿改动,请利用栈实现快速排序非递归函数:void QuickSort(); //quickSort
#include
using namespace std;
const int MaxSize=100;
class List
{
private:
int r[MaxSize+1];
int n;
public:
List(){n=0;} //empty list
void InsertR(int k) //表尾插入
{ r[++n]=k;}
void Display(); //display
void QuickSort(); //quickSort
};

void List::Display()
{
for(int i=1;i<=n;i++)
cout<
cout
}
int main()
{
List L;
while(1)
{
int k;
cin>>k;
if(!k) break;
L.InsertR(k);
}
L.Display();
L.QuickSort();
L.Display();
return 0;
}
Input
Output
Sample Input
12 21 32 2 4 24 21 432 23 9 0
Sample Output
12 21 32 2 4 24 21 432 23 9
2 4 9 12 21 21 23 24 32 432

解决方案

参考:http://blog.sina.com.cn/s/blog_6f24ba210100mr13.html

解决方案二:

递归的代码已经写出来了 轴值的问题怎么处理

解决方案三:

递归转栈主要就是把中间节点一个个放入栈格式的数据结构,然后再对应的pop出来处理。

时间: 2024-10-22 11:35:43

c++数据结构快速排序用栈实现的相关文章

最好是mytc做-数据结构里关于栈的操作

问题描述 数据结构里关于栈的操作 1.采用链式存储实现栈的初始化.入栈.出栈操作. 2. 结构体部分代码: typedef struct node { int data; struct node *next; }StackNode,*LinkStack; //定义栈结构 LinkStack Init_LinkStack() { return NULL; } //初始化 函数(a): LinkStack Push_LinkStack(LinkStack top,int x)//入栈 {-} 函数(

c#-数据结构关于双向栈的问题

问题描述 数据结构关于双向栈的问题 我自己做的小程序 是一个停车管理系统 我把相关的数据结构的定义和函数的定义发下 求大家帮忙看看,是不是我定义的有问题,运行出现问题,大概是在进栈出栈上出现的问题,谢谢大家啦~~ typedef struct ds_Car //地上停车场车辆 { int number; //车号 int hour; //到达的小时 int minute; //到达的分钟 }ds_CarNode; typedef struct //地上停车场(采用双向栈) { ds_CarNod

数据结构实验之栈一:进制转换

数据结构实验之栈一:进制转换 Time Limit: 1000MS Memory Limit: 65536KB Problem Description 输入一个十进制整数,将其转换成对应的R(2<=R<=9)进制数,并输出. Input 第一行输入需要转换的十进制数: 第二行输入R. Output 输出转换所得的R进制数. Example Input 1279 8 Example Output 2377 Code realization #include <stdio.h> #in

数据结构实践项目——栈

本组项目针对<数据结构基础系列(3):栈和队列>中的1-6课: 1 "栈和队列"导学 2 栈的定义 3 栈的顺序存储结构及其基本运算实现 4 栈的链式存储结构及其基本运算的实现 5 栈的应用1-表达式求值 6 栈的应用2-迷宫问题 [项目1 - 建立顺序栈算法库] 定义顺序栈存储结构,实现其基本运算,并完成测试. 要求: 1.头文件sqstack.h中定义数据结构并声明用于完成基本运算的函数.对应基本运算的函数包括: void InitStack(SqStack *&

数据结构 递归与栈-求大神指导调用递归函数中的栈是怎么运行的

问题描述 求大神指导调用递归函数中的栈是怎么运行的 回溯法与树的遍历 回溯法:其求解过程实质是一个先序遍历一棵"状态树"的过程,只是这棵树不是遍历前预先建立的,而 是隐含在遍历过程中. 题目描述:求含n个元素的集合的幂集. 例:A={1,2,3},则A的幂集为{{1,2,3},{1,2},{1, 3},{2,3},{1},{2},{3},{}} 解题思路:求幂集的过程可看成是依次对集合A中的元素进行取或舍的过程. 选择合适的数据结构--假设以线性表表示集合. 树根结点表示幂集元素的初始

问题求助 数据结构-使用双栈实现中缀表达式求值一个字符栈一个数字栈

问题描述 使用双栈实现中缀表达式求值一个字符栈一个数字栈 程序写好没输出啊,急求啊......主要BUG 在Nibolansuanfa()这个自定义函数里面前面的可以忽略..... /*核心函数*/ double Nibolansuanfa(char *str,stack *s) { initstack(&s);//初始化栈 char st[20],tc,xy;//st[20]里面放数字字符串 int j=0,i=0,yxcount=0; double d; while(str[j]!='')

数据结构应用案例——栈结构用于8皇后问题的回溯求解

[说明]本文来自由周世平老师主编的<C语言程序设计>教材.我作为参编人员执笔了第7.8章."第8章 问题求解与算法"中"8.6.1 回溯法"以8皇后问题的求解为例,介绍了回溯法的解题过程.这个解决方案中用到了"栈",引用至此,作为栈应用的例子.需要说明的是,教材面向程序设计初学者,并全文中并未提出过任何关于"栈"的描述.这样做,隐藏了术语,减少初学者的认知难度.对于数据结构的学习者而言,由于知识面的扩大,却用不着回

数据结构基础之栈的顺序存储表示与实现

  一.栈的定义 栈是限定仅在表尾进行插入或删除操作的线性表. 栈的表尾称为栈顶,表头称为栈底,不含元素的空表称为空栈. 栈的抽象数据类型定义: ADT Stack{ 数据对象:D={ai|ai(- ElemSet,i=1,2,...,n,n>=0} 数据关系:R1={|ai-1,ai(- D,i=2,...,n} 基本操作: InitStack(&S) 构造一个空栈S DestroyStack(&S) 栈S存在则栈S被销毁 ClearStack(&S) 栈S存在则清为空栈

c/c++/数据结构-手动实现栈出现了程序终止的问题

问题描述 手动实现栈出现了程序终止的问题 看到一个题:将一个十进制的数,转换为十六进制输出.要求手动用栈实现. 以下是代码: #include #include struct stack_s { int data; stack_s * next; }; void init(stack_s *s) { s->next = NULL; } void push(stack_s s, int e) { stack_s *p = (stack_s)malloc(sizeof(stack_s)); p->