链栈:初始化、判断栈空、入栈、出栈、获取栈顶元素等
2013-09-12 09:55
639 查看
#include <stdio.h> #include <stdlib.h> #define TRUE 1 #define FALSE 0 typedef int ElementType; typedef struct node { ElementType data; struct node *next; }StackNode, *LinkStack; /* 链栈的初始化 */ void InitStack(LinkStack top) { top->next = NULL;//top指针指向栈顶元素的上一个位置,下同 } /* 判断栈是否为空 */ int IsEmpty(LinkStack top) { if(top->next == NULL) return TRUE; return FALSE; } /* 元素入栈 */ int Push(LinkStack top, ElementType element) { LinkStack temp; temp = (LinkStack)malloc(sizeof(StackNode)); if(temp == NULL) return FALSE; temp->data = element; temp->next = top->next; top->next = temp; return TRUE; } /* 元素出栈 */ int Pop(LinkStack top, ElementType *element) { if(IsEmpty(top)) return FALSE; StackNode *temp = top->next; *element = temp->data; top->next = temp->next; free(temp); return TRUE; } /* 获取栈顶元素 */ int GetTop(LinkStack top, ElementType *element) { if(top->next == NULL) return FALSE; *element = top->next->data; return TRUE; } int main() { LinkStack s; int i; int result; s = (LinkStack)malloc(sizeof(StackNode)); InitStack(s); for(i=1; i<=10; i++) Push(s,i); GetTop(s,&result); printf("栈顶元素为:%d\n",result); printf("元素依次出栈:\n"); while (!IsEmpty(s)) { Pop(s,&result); printf("%d\n",result); } }
相关文章推荐
- C语言实现顺序栈的基本操作(初始化、判断空、入栈、出栈、获取栈顶元素)
- 栈的链式存储的定义、初始化、判断空、入栈、出栈、读取栈顶元素、求栈长度、清空栈操作
- C++栈的初始化,入栈,出栈,获取栈顶元素等操作
- 栈的顺序存储的初始化、判断栈空、入栈、出栈、读取栈顶元素、栈置空、求栈长操作
- 数据结构栈的数组实现初始化,入栈,出栈,获取栈顶元素,栈的长度等操作
- 链栈的初始化 入栈 出栈 打印栈中的元素等基础内容
- 顺序栈和链式栈的结构及其基本操作(置空,获取栈顶元素,入栈,出栈)
- 链式堆栈的初始化、出栈、入栈、取栈顶元素、判空
- 链栈的定义、初始化、出栈、入栈等操作
- 链栈的置空入栈,出栈,和返回栈顶元素操作
- 元素出栈、入栈顺序的合法性(判断一个字符串是否按照出栈顺序)
- 【数据结构之旅】顺序栈的定义、初始化、空栈判断、入栈、出栈操作
- JAVA顺序栈操作——初始化、入栈、出栈、判断空栈、判断栈满
- 数据结构:stack栈的初始化、入栈、出栈及显示栈元素
- 数据结构:stack栈的初始化、入栈、出栈及显示栈元素
- 剑指offer 22---判断元素出栈、 入栈顺序的合法性
- 判断元素出栈、入栈顺序的合法性。如:入栈的序列( 1,2,3,4,5 ),出栈序列为 ( 4,5,3,2,1 )是合法序列,入栈的序列( 1,2,3,4,5 ),出栈序列为( 1,5,3,2,4 )是
- stack容器的用法:入栈、出栈、访问栈顶元素,判断是否为空
- 顺序栈的基本操作:初始化、进栈、出栈、读栈顶元素
- 顺序栈的基本操作:初始化、进栈、出栈、读栈顶元素