0
点赞
收藏
分享

微信扫一扫

链栈的基本操作

//链栈
#include <stdio.h>
#include <stdlib.h>

#define OK 1
#define TRUE 1
#define ERROR 0
#define FALSE 0

typedef struct elem {
int n;
}elem;

typedef struct StackNode {
elem data;
struct StackNode* next;
}StackNode,*LintStack;

LintStack S;

//初始化链表
int InitStack(LintStack &S) {
S = NULL;
return OK;
}

//判断是否为空
int EmptyStack(LintStack S) {
if (S == NULL) return TRUE;
else return FALSE;
}

//求长度
int LengthStack(LintStack S) {
int i = 0;
LintStack p = S;
while (p) {
p = p->next;
i++;
}
return i;
}

//入栈
int Push(LintStack &S, elem e) {
LintStack p = (LintStack)malloc(sizeof(StackNode));
p->data = e;
p->next = S;
S = p;
return OK;
}

//出栈
int Pop(LintStack &S, elem &e) {
if (S == NULL) return ERROR;
LintStack p = S;
e = S->data;
S = S->next;
free(p);
return OK;
}

//取栈顶元素
int GetTop(LintStack S, elem &e) {
if (S == NULL) return ERROR;
e = S->data;
return OK;
}

//清空栈
int ClearStack(LintStack &S) {
if (S == NULL) return OK;
LintStack p=S->next;
while (p != NULL) {
free(S);
S = p;
p = S->next;
}
S = p;
return OK;
}

//销毁栈
int DeleteStack(LintStack &S){
LintStack p = S->next;
while (p != NULL) {
free(S);
S = p;
p = S->next;
}
free(S);
free(p);
return OK;

}

int main()
{
return 0;
}
举报

相关推荐

0 条评论