链栈的创建,入栈,出栈,获取栈顶元素
#include <stdio.h>
#include <stdlib.h>
#define Max 5
typedef struct LinkNode {
int data;
struct LinkNode* next;
}*ListStack;
ListStack push(ListStack &S, int e) {
LinkNode* h = S;
if (h == NULL) {
S = (LinkNode*)malloc(sizeof(LinkNode));
S->data = e;
S->next = NULL;
return S;
}
LinkNode* p = (LinkNode*)malloc(sizeof(LinkNode));
p->data = e;
p->next = h;
S = p;
return S;
}
bool pop(ListStack& S, int& e) {
if (S == NULL) {
return false;
}
e = S->data;
S = S->next;
return true;
}
bool GetTop(ListStack S, int& e) {
if (S == NULL) {
return false;
}
e = S->data;
return true;
}
int main() {
int e;
ListStack S=NULL;
S=push(S, 3);
GetTop(S, e);
printf("The top is %d\n", e);
S=push(S, 4);
GetTop(S,e);
printf("The top is %d\n", e);
pop(S, e);
printf("The top is %d\n", e);
GetTop(S, e);
printf("The top is %d\n", e);
}
#include <stdio.h>
#include <stdlib.h>
#define Max 5
typedef struct LinkNode {
int data;
struct LinkNode* next;
}*ListStack;
void InitStack(ListStack& S) {
S = NULL;
}
ListStack push(ListStack& S, int e) {
LinkNode* h = S;
if (h == NULL) {
S = (LinkNode*)malloc(sizeof(LinkNode));
S->data = e;
S->next = NULL;
return S;
}
LinkNode* p = (LinkNode*)malloc(sizeof(LinkNode));
p->data = e;
p->next = h;
S = p;
return S;
}
bool pop(LinkNode* & S, int& e) {
if (S == NULL) {
return false;
}
LinkNode* p = S;
e = S->data;
S = S->next;
free(p);
return true;
}
bool GetTop(ListStack S, int& e) {
if (S == NULL) {
return false;
}
e = S->data;
return true;
}
int main() {
int e;
ListStack S ;
InitStack(S);
S = push(S, 3);
GetTop(S, e);
printf("The top is %d\n", e);
S = push(S, 4);
GetTop(S, e);
printf("The top is %d\n", e);
pop(S, e);
printf("The top is %d\n", e);
GetTop(S, e);
printf("The top is %d\n", e);
}

本文演示了链栈的实现,包括初始化、入栈(push)、出栈(pop)和获取栈顶元素(GetTop)的操作。示例代码展示了如何使用C语言创建一个链栈,并进行基本的栈操作。
1万+

被折叠的 条评论
为什么被折叠?



