栈之链式存储基本操作
来源:互联网 发布:聚划算抢购软件 编辑:程序博客网 时间:2024/06/05 04:19
#include <stdio.h>#include <stdlib.h>//栈的链式存储结构typedef char ElemType;typedef struct linknode{ ElemType data;//数据域 struct linknode *next;//指针域}LiStack;//初始化栈void InitStack(LiStack *&s){ s=(LiStack *)malloc(sizeof(LiStack)); s->next=NULL;}//销毁栈void DestroyStack(LiStack *&s){ LiStack *p=s,*q=s->next; while(q!=NULL) { free(p); p=q; q=p->next; } free(p);}//判断栈是够为空bool StackEmpty(LiStack *s){ return (s->next==NULL);}//进栈void Push(LiStack *&s,ElemType e){ LiStack *p=s; p=(LiStack *)malloc(sizeof(LiStack));//新建元素p p->data=e; /************************/ p->next=s->next; s->next=p; /************************/}//出栈bool Pop(LiStack *&s,ElemType &e){ LiStack *p; if(s->next==NULL) return false; p=s->next; e=p->data; /************************/ s->next=p->next; free(p); /************************/}//取栈顶元素bool GetTop(LiStack *s,ElemType &e){ LiStack *p; if(s->next==NULL) return false; p=s->next; e=p->data; return true;}int main(){ElemType e;LiStack *s;printf("栈s的基本运算如下:\n");printf(" (1)初始化栈s\n");InitStack(s);printf(" (2)栈为%s\n",(StackEmpty(s)?"空":"非空"));printf(" (3)依次进栈元素a,b,c,d,e\n");Push(s,'a');Push(s,'b');Push(s,'c');Push(s,'d');Push(s,'e');printf(" (4)栈为%s\n",(StackEmpty(s)?"空":"非空"));printf(" (5)出栈序列:");while (!StackEmpty(s)){Pop(s,e);printf("%c ",e);}printf("\n");printf(" (6)栈为%s\n",(StackEmpty(s)?"空":"非空"));printf(" (7)释放栈\n");DestroyStack(s); return 0;}
运行结果:
心得:
栈的链式存储结构是没有到栈顶的情况的,可以无限长。其实无论进栈出栈还是删除栈元素,用到的操作都是单链表的基本操作,进栈就是头插法,出栈就是删除第一个元素。另外出栈和去栈顶元素时要注意判断栈空的情况。
0 0
- 栈之链式存储基本操作
- 链式栈基本操作
- 栈的基本操作(链式存储)链栈
- 数据结构 串(链式存储)的基本操作
- 串的链式存储的基本操作
- 串的链式存储基本操作
- 链表(链式存储)的基本操作
- 链式栈的基本操作
- 链式栈的基本操作
- 链式栈的基本操作
- 链式栈的基本操作
- 数据结构笔记之链式栈的基本操作
- 数据结构之链式栈的一些基本操作
- PHP数据结构之七_队列的链式存储和队列的基本操作
- 链式队列基本操作之code_legend
- 线性表之链式表基本操作
- 队列之链式队列基本操作
- 栈的链式存储及其基本运算
- ListView视图动态增加与删除控件条目,内容
- mysql 菜鸟优化
- centos 下 sphinx安装和配置
- java编程思想读书笔记--第三章
- (.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
- 栈之链式存储基本操作
- 数据结构01 绪论
- CentOS Linux搭建独立SVN Server
- STL-sort之结构体排序
- Vue安装
- 使Qt程序只能运行一个实例的3种方法
- 详解JavaScript函数柯里化
- CodeForces 761C Dasha and Password
- 超级干货 产品发布会活动策划知识整理一