栈的基本操作
来源:互联网 发布:逆战弹道优化 编辑:程序博客网 时间:2024/05/20 01:09
#include <stdio.h>
#include <stdlib.h>
#define ERROR 0
#define OK 1
#define MAX_STATCK_SIZE 100
#define STATCK_INCREMENT 10
typedef int elemtype;
typedef struct sqstack
{
int *base;
int *top;
int stacksize;
}sqstack_s;
int sqstack_init(sqstack_s *sq)
{
((sq)->base) = (int*)malloc(sizeof(elemtype)*12);
if(!((sq)->base)) return ERROR;
(sq)->top = (sq)->base;
(sq)->stacksize = MAX_STATCK_SIZE;
}
//入栈操作
int push_stack(sqstack_s *sq, int n)
{
if(sq->top-sq->base>=sq->stacksize)
{
sq->base = (int *)realloc(sq->base,(sq->stacksize+STATCK_INCREMENT)*sizeof(elemtype));
}
if(!sq) return ERROR;
sq->stacksize += STATCK_INCREMENT;
*(sq->top) = n;
++sq->top;
}
//出栈操作
int pop_stack(sqstack_s *sq,int *n)
{
sqstack_s *p;
p = sq;
if(p->base ==p->top) return ERROR;
--p->top;
*n = *(p->top);
}
//清空一个栈
int clear_stack(sqstack_s *sq)
{
if(sq->base ==sq->top) return OK;
else sq->top = sq->base ;
}
//销毁一个栈
int destory_stack(sqstack_s *sq)
{
free(sq->base);
sq->base = sq->top = NULL;
sq->stacksize = 0;
}
//计算一个栈的长度
int stack_length(sqstack_s *sq,int *length)
{
*length = (sq->top) - (sq->base);
printf("%d\n",*length);
}
int main()
{
int a[10];
int len;
int i;
sqstack_s sqs;
printf("hello world\n");
sqstack_init(&sqs);
for(i=0;i<10;i++)
{
push_stack(&sqs,i);
}
//计算一个栈
stack_length(&sqs,&len);
for(i=0;i<10;i++)
{
pop_stack(&sqs,a+i);
}
printf("the statck length is %d\n",len);
}
#include <stdlib.h>
#define ERROR 0
#define OK 1
#define MAX_STATCK_SIZE 100
#define STATCK_INCREMENT 10
typedef int elemtype;
typedef struct sqstack
{
int *base;
int *top;
int stacksize;
}sqstack_s;
int sqstack_init(sqstack_s *sq)
{
((sq)->base) = (int*)malloc(sizeof(elemtype)*12);
if(!((sq)->base)) return ERROR;
(sq)->top = (sq)->base;
(sq)->stacksize = MAX_STATCK_SIZE;
}
//入栈操作
int push_stack(sqstack_s *sq, int n)
{
if(sq->top-sq->base>=sq->stacksize)
{
sq->base = (int *)realloc(sq->base,(sq->stacksize+STATCK_INCREMENT)*sizeof(elemtype));
}
if(!sq) return ERROR;
sq->stacksize += STATCK_INCREMENT;
*(sq->top) = n;
++sq->top;
}
//出栈操作
int pop_stack(sqstack_s *sq,int *n)
{
sqstack_s *p;
p = sq;
if(p->base ==p->top) return ERROR;
--p->top;
*n = *(p->top);
}
//清空一个栈
int clear_stack(sqstack_s *sq)
{
if(sq->base ==sq->top) return OK;
else sq->top = sq->base ;
}
//销毁一个栈
int destory_stack(sqstack_s *sq)
{
free(sq->base);
sq->base = sq->top = NULL;
sq->stacksize = 0;
}
//计算一个栈的长度
int stack_length(sqstack_s *sq,int *length)
{
*length = (sq->top) - (sq->base);
printf("%d\n",*length);
}
int main()
{
int a[10];
int len;
int i;
sqstack_s sqs;
printf("hello world\n");
sqstack_init(&sqs);
for(i=0;i<10;i++)
{
push_stack(&sqs,i);
}
//计算一个栈
stack_length(&sqs,&len);
for(i=0;i<10;i++)
{
pop_stack(&sqs,a+i);
}
printf("the statck length is %d\n",len);
}
阅读全文
0 0
- 栈的基本操作
- 栈的基本操作
- 栈 的基本操作。
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- SpringAOP整合Hibernate并使用事务(模拟买书的过程)
- kuangbin专题五 并查集 POJ2236-Wireless Network
- UE4 C++创建删除文件夹(对本地文件夹进行操作)
- shell
- Docker: 精通ENTRYPOINT指令
- 栈的基本操作
- 给你一台大疆无人机,你能用来做点啥?(三)------倾斜摄影建模基础
- Eclipse 创建一个项目 并使用 git 上传到 码云
- jQuery添加删除,全选反选,批量删除
- Tourism Planning (状态dp)
- C++11 for循环新用法、for_each 用法
- 接华为应用
- Linux MySQL-5.7安装(1)
- 写论文,为什么要写参考文献?感觉完全不必要,把自己的研究成果说清楚不就行了?