这题正确姿势是用顺序表做。昨天没注意直接用链表做了。。
思路:利用辅助栈排序
第一步:
取原栈第一个元素a,压辅助栈a 删除原栈a
大循环
第二步:循环
取原栈第一个元素a,删除原栈a 。*循环1:在辅助栈中找< 或 >的元素
计数k++ 循环1-
循环2 助栈空压回原栈k个元素 循环2- ,把a压栈辅助栈,循环3 再把原栈里的数据全部压回辅助栈 循环3-
大循环-
#include <iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int size=0;
typedef struct no
{
int data;
struct no *pnext; //构造栈
}node;
typedef struct
{
node head; //构造栈头和栈尾 头尾不存储数据
node tail;
}lht;
void steak_show(const lht *p)
{
node *pn=(node*)p->head.pnext;
while(pn!=&p->tail)
{
printf("%d ",pn->data); //遍历显示栈
pn=pn->pnext;
}
printf("\n");
}
void steak_init(lht *p)
{
p->head.pnext=&p->tail;
p->tail.pnext=NULL; //初始化栈
}
int steak_add(lht *p,int i)
{
node *pf=NULL,