c语言用堆栈方法实现将数逆序,【c语言】用堆栈实现数字排序

#include #includetypedefstructNODE{struct NODE *next;intdata;

}node;

typedefstructSTACK{

node*head;intlen;

}stack;

stack* init(void){

stack* List=(stack *) malloc(sizeof(stack));

List->head=NULL;

List->len=0;returnList;

}int pop(stack *st){if(0>=st->len||NULL ==st) {

printf("NULL stack,leaving now\n");

exit(1);

}int pdata=st->head->data;

st->head=st->head->next;

st->len--;returnpdata;

}void push(stack *st, intn){if(NULL == st|| 0>st->len){

printf("wrong stack,please check the source code, now leaving\n");

exit(1);

}

node* pp=(node*)malloc(sizeof(node));

pp->next=st->head;

pp->data=n;

st->head=pp;

st->len++;

}void print(stack*st,intn){

node* pp=st->head;while(n){

printf("%d\n",pp->data);

n--;

pp=pp->next;

}

}intmain(){inttmp,tmp1;

stack* st1=init();

stack* st2=init();int n=0;

push(st1,3);

n++;

push(st1,2);

n++;

push(st1,4);

n++;

push(st1,6);

n++;

push(st1,5);

n++;

print(st1,n);

tmp=pop(st1);

push(st2,tmp);while(0!=st2->len)

{if(0>=st1->len){while(0!=st2->len){

tmp1=pop(st2);

push(st1,tmp1);

}break;

}else{

tmp=pop(st1);if( tmp >= st2->head->data)

push(st2,tmp);else{while(0!=st2->len){

tmp1=pop(st2);

push(st1,tmp1);

}

push(st2,tmp);

}

}

}

printf("\n\n");

print(st1,n);return 0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值