链栈的创建,入栈,出栈,获取栈顶元素
#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);
}