#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
#define STACKINITSIZE 10
#define STACKCREATSIZE 2
typedef int ElemType;
// 结构体
typedef struct node {
ElemType data;
struct node *next;
} LinkStack;
//初始化
LinkStack *InitStack() {
LinkStack *s;
s=(LinkStack*)malloc(sizeof(LinkStack));
s->next=NULL;
return s;
}
//出栈
int Push(LinkStack *s,ElemType e1) {
LinkStack *p;
p=(LinkStack*)malloc(sizeof(LinkStack));
p->data=e1;
p->next=s->next;
s->next=p;
return OK;
}
//入栈
int Pop(LinkStack *s,ElemType *e) {
LinkStack *p;
if(s->next==NULL)
return ERROR;
p=s->next;
s->next=p->next;
free(p);
return OK;
}
//取栈顶
int GetStack(LinkStack *s,ElemType *e) {
LinkStack *p;
if(s->next==NULL)
return ERROR;
p=s->next;
*e=p->data;
return OK;
}
//判空
int StackEmpty(LinkStack *s) {
if(s->next==NULL)
return ERROR;
else
return OK;
}
//打印
int PrintfStack(LinkStack *s) {
LinkStack *p;
p=s;
if(p->next==NULL)
return ERROR;
while(p!=NULL) {
printf("%d,",p->data);
p=p->next;
}
return OK;
}
int main(void) {
LinkStack s;
ElemType e,e1;
scanf("%d",&e1);
InitStack();
Push(&s,e1);
// Pop(&s,&e);
// StackEmpty(&s);
// GetStack(&s,&e);
PrintfStack(&s);
return 0;
}
C语言数据结构链栈的基本操作之出栈入栈打印置空栈取栈顶求深度等
最新推荐文章于 2023-11-13 10:36:45 发布