链栈
来源:互联网 发布:10年前的网络歌曲 编辑:程序博客网 时间:2024/06/06 12:49
栈的链式存储结构称为链栈,它是操作受限的单链表,其插入和删除操作仅限制在表头位置上进行。链栈通常用不带头结点的单链表来实现。栈顶指针就是链表的头指针。
1.相关声明
2.初始化,设置一个空栈
3.判断链栈是否为空
4.进栈
5.出栈
6.读取栈顶元素
7.测试语言
8.程序运行结果
1.
#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define OK 1#define ERROR 0#define OVERFLOW -1#define TRUE 1#define FALSE 0typedef int Status; typedef int Elem;typedef struct SNode *LinkStack;typedef struct SNode{Elem data;struct SNode * Next;}SNODE;2.
//设置一个空栈LinkStack Init_stack(){LinkStack s;s=NULL;return s;}3.
//判断链栈是否为空Status IsEmpty_stack(LinkStack L){if (L==NULL){return OK;}else{return ERROR;}}4.
//插入一个新的栈顶元素,即:进栈void Push_stack(LinkStack *L,Elem x){SNODE *pNew=(SNODE *)malloc(sizeof(SNODE));if (pNew==NULL){exit(OVERFLOW);}pNew->data=x;pNew->Next=*L;*L=pNew;}5.
//删除栈顶元素,即:出栈Elem Pop_stack(LinkStack *L){LinkStack p;//暂存栈结点Elem e;if (*L==NULL)exit(-1);e=(*L)->data;//原栈顶元素 p=*L;(*L)=(*L)->Next;free(p);return e;}6.
//读取栈顶元素Elem Peek_stack(LinkStack top){if (top==NULL){printf("为空栈!\n");exit(-1);}return top->data;}
7.
int main(){int i;Elem val;Elem Item;Elem x;LinkStack s;//定义一个栈s=(LinkStack)malloc(sizeof(SNODE));//分配内存空间s=Init_stack();//初始化printf("0-9依次入栈并输出:\n"); for(i=0;i<10;i++) //要对栈进行修改,则须传入栈顶指针的地址 { Push_stack(&s,i); //进栈x=Peek_stack(s); //取栈顶元素printf("%d ",x); } printf("\n");printf("\n"); while(!IsEmpty_stack(s)) { val=Pop_stack(&s); //出栈 printf("%d ",val); }printf("\n");printf("\n");x=Peek_stack(s); printf("%d ",x); printf("\n");return 0;}8.
0 0
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- Yii2优雅的Active Record
- 冒泡排序
- 分享一个Android Expand Collapse的动画
- Android ListView使用BaseAdapter与ListView的优化
- JAX-RS规范-常用注解浅析
- 链栈
- select into from 和 insert into select 的用法和区别
- 最新的IOS在windows环境下编译环境搭建记录
- UVa 253 Cube painting(骰子涂色)
- jQuery实战笔记(一)-jQuery基本原理
- 再谈大可乐3:众筹昭示未来可期
- c++ primer plus 习题5.7(使用new为结构创建动态数组)
- Java开发中的23种设计模式详解(转)
- CSS基础知识总结--《CSS权威指南》阅读笔记(一)