当前位置:   article > 正文

数据结构栈的插入和删除_qt中怎么删除栈

qt中怎么删除栈

#include<stdio.h>
#include<stdlib.h>
typedef struct stack {
int data;
struct stacknext;
}stack;
//栈:LIFO只能在栈顶删除插入(类似头插法)
stack
init() {
stack* L = (stack*)malloc(sizeof(stack));
L->data = 0;// 表示当前栈的元素个数,为0时表示空栈
L->next = NULL;
return L;
}
void judje(stack* L){
//第一步判断栈是否为空
//stack* un = L;
if (L->data == 0 || L->next == NULL)
printf(“栈空\n”);
else
printf(“栈顶元素是:%d\n”, L->next->data);
}
void insStack(stack* L, int data) {
stack* S = (stack*)malloc(sizeof(stack));
S->data = data;
S->next = L->next;
L->next = S;
L->data++;//表示栈元素加一
}
void outStack(stackL,int data){//delete函数
if (L->data == 0 || L->next == NULL)
printf(“栈空,删除失败\n”);
else {
printf(“删除栈顶元素%d\n新栈参数:\n”, L->next->data);
stack
S = L->next;
//L->next = L->next->next;
L->next = S->next;
free(S);//vs2022编译器中后面不再调用S结点即可成功执行free
//否则会是:free之前可运行但free之后的代码不能运行
}
}
void show(stack* L) {
stack* beiyong=L->next;
while (beiyong != NULL) {
printf("%d->", beiyong->data);
beiyong = beiyong->next;
}
printf(“NULL\n”);
}
int main() {
stack* L = init();
insStack(L, 1);
insStack(L, 3);
insStack(L, 5);
insStack(L, 7);
insStack(L, 9);
judje(L);
show(L);
outStack(L, 9);
judje(L);
show(L);
stack* S = init();
judje(S);
show(S);
}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/840396
推荐阅读
相关标签
  

闽ICP备14008679号