1.栈的概念
展示只允许在其一端进行插入语删除操作的表。从定义上来说,栈其实也是线性表,因此栈也具备大多数线性表所具备的基本操作。但是,从定义上可知,栈在进行插入、删除操作时,只能在一端进行操作,这一端成为栈顶(top)。
栈最核心的操作主要是:进栈(Push)、出栈(Pop)、返回栈顶元素(Top)。 此外,栈还判断栈是否为空、创见栈、清空栈等操作。
既然是线性表,那么栈从实现方式来说主要有两种:顺序存储实现(数组)、链式存储实现(链表)。下面是链式存储实现方式下,站的数据结构定义:
typedefstructNode*PtrToNode; typedefPtrToNodeStack; typedefstructNode { intElement; PtrToNodeNext; };
站的基本操作如下:
//判断栈是否为空 intIsEmpty(StackS); //创见栈 StackCreateStack(); //销毁栈 voidDisposeStack(StackS); //清空栈 voidMakeEmpty(StackS); //进栈 voidPush(intX,StackS); //返回栈顶元素 intTop(StackS); //出栈 voidPop(StackS);
下面是一个完整的关于栈的基本操作的例子:
#include<stdio.h> #include<stdlib.h> typedefstructNode*PtrToNode; typedefPtrToNodeStack; typedefstructNode { intElement; PtrToNodeNext; }; intIsEmpty(StackS); StackCreateStack(); voidDisposeStack(StackS); voidMakeEmpty(StackS); voidPush(intX,StackS); intTop(StackS); voidPop(StackS); //判断栈是否为空 intIsEmpty(StackS) { returnS->Next==NULL; } //创建链栈 StackCreateStack() { StackS=malloc(sizeof(structNode)); if(S==NULL) { printf("Noenoughmemory!"); returnNULL; } S->Next=NULL; MakeEmpty(S); returnS; } voidMakeEmpty(StackS) { if(S==NULL) { printf("UseCreateStackFirst!"); } else { while(!IsEmpty(S)) { Pop(S); } } } voidPush(intX,StackS) { PtrToNodeTmp; Tmp=malloc(sizeof(structNode)); if(Tmp!=NULL) { Tmp->Element=X; Tmp->Next=S->Next; S->Next=Tmp; } else { printf("Outofspace!"); } } voidPop(StackS) { if(IsEmpty(S)) { printf("TheStackisEmpty!"); } else { PtrToNodeTmp=S->Next; S->Next=Tmp->Next; free(Tmp); } } intTop(StackS) { if(IsEmpty(S)) { printf("Thestackisempty!"); return0; } else { returnS->Next->Element; } } intmain(void) { StackS=CreateStack(); inti; for(i=0;i<5;i++) { Push(i,S); } while(!IsEmpty(S)) { printf("%d\n",Top(S)); Pop(S); } return0; }
您还没有登录,请您登录后再发表评论
用C++实现的栈操作,涉及顺序存储和链式存储。顺序存储的栈操作用类SeqStack实现,链式表存储的栈操作用LinkStack实现。main函数中做了部分测试。可根据需要继续扩充此程序。SeqStack和LinkStack可直接复制到其他...
实验二 单链表实验 一、实验目的 1、掌握用Visual C++6.0上机调试单链表的基本方法 2、掌握单链表的插入、删除、查找、求表长以及有序单链表的合并算法的实现 ...[基本要求]用链式存储结构实现存储
用C++语言实现了对线性表的操作,有对线性表的顺序存储和链式存储,可根据需要适当扩充。本程序有三个类:SeqList、LinkList、Function。前面两个类实现了相同的功能(线性表中的常用功能),一个是顺序存储,一个是...
用C++实现的。顺序存储和链式存储都封装成了类。里面的注释写了些提示,希望能有所帮助。
1. 栈的基本概念 2. 栈的顺序存储表示表示和实现 (1)顺序栈动态分配存储空间方法 和对栈操作设计 (2)顺序栈静态分配存储空间方法 和对栈...3. 栈的链式存储结构——链栈 顺序栈静态分配存储空间方法 和对栈操作设计
数据结构-第二章(5)-链式存储结构(csdn)————程序
队列是一种先进先出的数据结构:即插入在表的一端(队尾)进行,删除在表的另一端(队头)进行 与线性表相似,队列也有顺序储存和链式储存两种储存方法;实现方法和代码在此文档中,详细说明见本人博客
《数据结构——用C语言描述》+课后题答案包括顺序存储链式存储结构等 栈和队列推荐
用不同的存储结构构成了队列。 即用线性存储结构和链式存储结构构成。
1.从键盘输入顺序任意的5个整数,按有序插入的要求生成第一个有序单链表,将该链表输出显示。 2.再从键盘输入顺序任意的5个整数,按有序插入的要求生成第二个有序单链表,将该链表输出显示。 3.将这两个有序单链表...
简单,线性表的链式存储原理,02702004 [单选题] A、必须是连续的 B、一定是不连续的 C、部分地址必须是连续的 D、连续与否均可以(正确答案) 数据结构——线性表(选择题)全文共11页,当前为第1页。 数据结构——...
成员函数是实现栈最基本的操作——push()向栈中加入元素,pop()移出栈顶元素,top()得到栈顶元素,empty()判断栈是否为空。 参见博客:http://blog.csdn.net/xiaowei_cqu/article/details/7748213
(1)采用链式存储结构建立二叉树,并按先序输入二叉树的结点序列。建立时按先序输入的结点序列为:a b c # # # d e # f # # g # # (2)二叉树的建立采用递归方式实现,先序遍历、中序遍历、后序遍历均采用非递归方式...
数据结构——二叉树的创建与遍历(链式存储结构)
数据结构——线性表的链式存储。 一篇文章带你快速了解!
(1) 熟练掌握队列的两种存储方式。 (2) 掌握队列的基本操作及应用。 (3) 利用链式存储线性表和队列实现银行业务模拟程序。
3.5.4 字符数据在内存中的存储形式及使用方法 41 3.5.5 字符串常量 41 3.5.6 符号常量 42 3.6 变量赋初值 42 3.7 各类数值型数据之间的混合运算 43 3.8 算术运算符和算术表达式 44 3.8.1 C运算符简介 44 3.8.2 算术...
数据结构——用C描述答案 习题解答(唐策善版)(其他版本在上面) 第一章 绪论(参考答案) 1.3 (1) O(n) (2) (2) O(n) (3) (3) O(n) (4) (4) O(n1/2) (5) (5) 执行程序段的过程中,x,y值变化如下: 循环次数 x y 0...
数据结构上的基本操作: ◆插入操作 ◆删除操作 ◆更新操作 ◆查找操作 ◆排序操作 数据结构是指数据对象及相互关系和构造方法,一个数据结构B形式上可以用一个二元组表示为B=(A,R)。其中,A是数据结构中的数据...
实验内容:建立有n个元素的二叉排序树,并在其上进行查找。...实验说明:(1)建立n个元素的二叉树,以链式结构存储,数据元素为整型。(2)在该二叉树上查找某数据,若查找成功则输出成功信息,若查找失败,则插入该数据。
相关推荐
用C++实现的栈操作,涉及顺序存储和链式存储。顺序存储的栈操作用类SeqStack实现,链式表存储的栈操作用LinkStack实现。main函数中做了部分测试。可根据需要继续扩充此程序。SeqStack和LinkStack可直接复制到其他...
实验二 单链表实验 一、实验目的 1、掌握用Visual C++6.0上机调试单链表的基本方法 2、掌握单链表的插入、删除、查找、求表长以及有序单链表的合并算法的实现 ...[基本要求]用链式存储结构实现存储
用C++语言实现了对线性表的操作,有对线性表的顺序存储和链式存储,可根据需要适当扩充。本程序有三个类:SeqList、LinkList、Function。前面两个类实现了相同的功能(线性表中的常用功能),一个是顺序存储,一个是...
用C++实现的。顺序存储和链式存储都封装成了类。里面的注释写了些提示,希望能有所帮助。
1. 栈的基本概念 2. 栈的顺序存储表示表示和实现 (1)顺序栈动态分配存储空间方法 和对栈操作设计 (2)顺序栈静态分配存储空间方法 和对栈...3. 栈的链式存储结构——链栈 顺序栈静态分配存储空间方法 和对栈操作设计
数据结构-第二章(5)-链式存储结构(csdn)————程序
队列是一种先进先出的数据结构:即插入在表的一端(队尾)进行,删除在表的另一端(队头)进行 与线性表相似,队列也有顺序储存和链式储存两种储存方法;实现方法和代码在此文档中,详细说明见本人博客
《数据结构——用C语言描述》+课后题答案包括顺序存储链式存储结构等 栈和队列推荐
用不同的存储结构构成了队列。 即用线性存储结构和链式存储结构构成。
1.从键盘输入顺序任意的5个整数,按有序插入的要求生成第一个有序单链表,将该链表输出显示。 2.再从键盘输入顺序任意的5个整数,按有序插入的要求生成第二个有序单链表,将该链表输出显示。 3.将这两个有序单链表...
简单,线性表的链式存储原理,02702004 [单选题] A、必须是连续的 B、一定是不连续的 C、部分地址必须是连续的 D、连续与否均可以(正确答案) 数据结构——线性表(选择题)全文共11页,当前为第1页。 数据结构——...
成员函数是实现栈最基本的操作——push()向栈中加入元素,pop()移出栈顶元素,top()得到栈顶元素,empty()判断栈是否为空。 参见博客:http://blog.csdn.net/xiaowei_cqu/article/details/7748213
(1)采用链式存储结构建立二叉树,并按先序输入二叉树的结点序列。建立时按先序输入的结点序列为:a b c # # # d e # f # # g # # (2)二叉树的建立采用递归方式实现,先序遍历、中序遍历、后序遍历均采用非递归方式...
数据结构——二叉树的创建与遍历(链式存储结构)
数据结构——线性表的链式存储。 一篇文章带你快速了解!
(1) 熟练掌握队列的两种存储方式。 (2) 掌握队列的基本操作及应用。 (3) 利用链式存储线性表和队列实现银行业务模拟程序。
3.5.4 字符数据在内存中的存储形式及使用方法 41 3.5.5 字符串常量 41 3.5.6 符号常量 42 3.6 变量赋初值 42 3.7 各类数值型数据之间的混合运算 43 3.8 算术运算符和算术表达式 44 3.8.1 C运算符简介 44 3.8.2 算术...
数据结构——用C描述答案 习题解答(唐策善版)(其他版本在上面) 第一章 绪论(参考答案) 1.3 (1) O(n) (2) (2) O(n) (3) (3) O(n) (4) (4) O(n1/2) (5) (5) 执行程序段的过程中,x,y值变化如下: 循环次数 x y 0...
数据结构上的基本操作: ◆插入操作 ◆删除操作 ◆更新操作 ◆查找操作 ◆排序操作 数据结构是指数据对象及相互关系和构造方法,一个数据结构B形式上可以用一个二元组表示为B=(A,R)。其中,A是数据结构中的数据...
实验内容:建立有n个元素的二叉排序树,并在其上进行查找。...实验说明:(1)建立n个元素的二叉树,以链式结构存储,数据元素为整型。(2)在该二叉树上查找某数据,若查找成功则输出成功信息,若查找失败,则插入该数据。