栈的应用行编辑数据结构c语言,数据结构C语言实现----入栈操作

1.栈顶是没有元素的,栈顶是一个空值

2.把一个元素压进栈时,不要给栈顶的地址赋值,而是赋值给指针

例如:你在结构体中定义了 char *top;

那么你要把元素date赋值给*top,而不是top

赋值完成后,top++,因为栈顶没有值

代码如下:

#include

#include

typedef struct

{

char *base;

char *top;

int stacksize;

} sqStack;

//

//创建一个栈

#define SATCK_INIT_SIZE 100

void initstack(sqStack *stack)

{

stack->base = (char*)malloc( SATCK_INIT_SIZE * sizeof(char));

if (!stack->base)

{

exit(0);

}

stack->top = stack->base;

stack->stacksize = SATCK_INIT_SIZE;

}

/

//入栈操作

#define STACK 10

void Push(sqStack *stack , char c)

{

if (stack->top - stack->base > stack->stacksize)

{//空间不足,追加空间

stack->base = (char*)realloc(stack->base , (STACK + stack->stacksize) * sizeof(char));//用realloc函数在原内容不变的基础上追加空间

if (!stack->base)

{

exit(0);

}

stack->top = stack->base + stack->stacksize;

stack->stacksize = stack->stacksize + STACK;

}

*(stack->top) = c;//stack->top是一个地址,而*(stack->top)是一个char类型的变量

stack->top++;//地址加一

}

int main()

{

sqStack stack;

initstack(&stack);//创建一个栈

printf("请输入要压入栈的字符:");

char c;

scanf("%c",&c);

Push(&stack,c);

printf("打印栈中元素:%c" , *--(stack.top));

return 0;

}

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值