什么是栈?
栈是线性表的一种特殊存储结构,它只能从头的一端进行插入和删除,另一端是不能进行插入和删除。对栈结构的元素进行删除操作要遵循“先进后出”的原则。
首先,创建结构体和头文件等
typedef struct array
{
char elem;
struct array *next;
}array;
插入操作(进栈)
array *push_array(array *arr, char elem)
{
array *tempArray = (array*)malloc(sizeof(array));//申请空间
tempArray->elem = elem;//插入数据
tempArray->next = arr;//将他的下一个指向前一个元素指针地址
arr = tempArray;//进栈(头部)
return arr;
}
删除操作(出栈)
array *pop_array(array *arr)
{
if (arr) {
array *p = arr;//出栈
arr = arr->next;
printf("弹出的元素为%c", p->elem);
if (arr) {
printf(",顶部元素为%c\n", arr->elem);
} else {
printf(",栈已空\n");
}
} else {
printf("栈内没有元素");
}
return arr;
}
运行
int main()
{
array *arr = NULL;
arr = push_array(arr, 'a');
arr = push_array(arr, 'b');
arr = push_array(arr, 'c');
arr = push_array(arr, 'd');
arr = pop_array(arr);
arr = pop_array(arr);
arr = pop_array(arr);
arr = pop_array(arr);
return 0;
}