数据结构栈的插入和删除

#include
#include
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);
}

你可能感兴趣的:(数据结构,数据结构,链表,c语言)