C语言实现栈

来源:3-2 栈的基本实现

慕粉4184331

2020-04-17

老师我用C语言实现了一个栈你看下有什么需要修改的

struct  Stack
{
	int e[10];
	int size;
};
typedef Stack* ArrayStack;
Stack* CreateStack() {
	ArrayStack stackBottom = (ArrayStack)malloc(sizeof(Stack*));
	stackBottom->size = 0;
	return stackBottom;
}
int getsize(ArrayStack stack) { return stack->size;}
void push(ArrayStack stackBottom, int e) {
	int i = getsize(stackBottom);
	stackBottom->e[i] = e;
	stackBottom->size++;
}
void pop(ArrayStack stack) {
	printf("出栈:%d\n", stack->e[stack->size-1]);
	stack->size--;
}
int main() {
	ArrayStack stack = CreateStack();
	push(stack, 1);
	push(stack, 2);
	pop(stack);
	pop(stack);
}```

写回答

1回答

liuyubobobo

2020-04-18

感谢分享:)


思路没有问题。只不过因为是写死的 int e[10];,所以这个栈最多只能放 10 个元素。


可以考虑栈中存放元素的数据类型是 int*,在 CreateStack 时候可以由用户指定栈中最多盛放元素的大小;当然,更复杂一些,可以将课程中介绍的数组元素动态变化的 resize 机制放入其中:)


继续加油!:)

0
0

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程