#include<stdio.h>
#include<stdlib.h>
struct Node{
char data;
struct Node* next;
};
struct stack{
struct Node* stackTop;
int size;
};
struct Node* createNode(char data){
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = data;
newNode->next = NULL;
return newNode;
}
struct stack* createStack(){
struct stack* myStack = (struct stack*)malloc(sizeof(struct stack));
myStack->stackTop = NULL;
myStack->size = 0;
return myStack;
};
//定义一个元素入栈的方法
void Push(struct stack* S,char data){
struct Node* myNode = createNode(data);
myNode->next = S->stackTop;
S->stackTop=myNode;
S->size++;
};
//定义一个栈空检测方法
int isEmpty(struct stack* S){
if (S->size==0){
return 1;
}
return 0;
};
//定义一个弹出栈顶元素的方法
void Pop(struct stack* S){
struct Node* p;
if(isEmpty(S)){
printf("栈为空,弹出非法");
//return ;
}
printf("弹出栈顶元素为:%c\n",S->stackTop->data);
p = S->stackTop->next;
free(S->stackTop);
S->stackTop = p;
S->size--;
//return tmp;
};
//定义一个打印栈中元素的方法
void showStack(struct stack* S){
int tmp=S->size;
struct Node* p;
p=S->stackTop;
while (tmp>0){
printf("%c ",p->data);
p = p->next;
tmp--;
}
printf("\n");
}
void main(){
struct stack* S = createStack();
Push(S,'a');
Push(S,'b');
Push(S,'c');
showStack(S);
Pop(S);
showStack(S);
}
C语言链式栈
最新推荐文章于 2022-04-24 09:44:48 发布