关键词:
自己简直是强迫症晚期,上次因为对访问结构体成员该用什么方法困惑了很久,导致没把顺序存储的捣鼓出来(明明比链式的要好写)
今天花了个20分钟调好了
因为今天比较晚,赶时间就没给类型起别名用ElemType写,直接用了int类型。需要的话可以自行更改。
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<iostream> 4 using namespace std; 5 #define maxsize 50 6 /*顺序栈的定义*/ 7 typedef struct Snode{ 8 int data[maxsize]; 9 int top; 10 }SqStack; 11 /*栈的初始化:设置S.top为1,站顶元素是S.data[top]*/ 12 void InitStack(SqStack *S) 13 { 14 (*S).top=-1; 15 } 16 /*判断栈是否为空:top==-1*/ 17 int StackEmpty(SqStack *S) 18 { 19 if(S->top==-1) return 1; 20 else return 0; 21 } 22 /*入栈*/ 23 int Push(SqStack *S,int x) 24 { 25 if(S->top==maxsize-1)//栈满了 26 return -1; 27 S->data[++S->top]=x; 28 /*这里等价于 29 S->top++; 30 S->data[S->top]=x; 31 先指针加一再入栈 32 */ 33 // cout<<"push the data x:"<<x<<endl; 34 return 1; 35 } 36 /*读取栈顶元素*/ 37 int GetTop(SqStack *S,int &x) 38 { 39 if(S->top==-1)//栈空 40 return -1; 41 x=S->data[S->top]; 42 return 1; 43 } 44 /*出栈*/ 45 int Pop(SqStack *S,int x) 46 { 47 if(S->top==-1) 48 return -1;//栈空,啥也吐不出来 49 x=S->data[S->top--]; 50 51 /*等价于 52 x=S->data[S->top]; 53 S->top--; 54 */ 55 return 1; 56 } 57 int main() 58 { 59 SqStack *S=(SqStack *)malloc(sizeof(SqStack));//一定要先生成一个指针 60 InitStack(S); 61 cout<<(*S).top<<endl; 62 int a1=StackEmpty(S); 63 cout<<a1<<endl; 64 cout<<"Test the function ‘Push‘,input a data:"; 65 cin>>a1; 66 Push(S,a1); 67 int w; 68 cout<<"Before GetTop,w is"<<w<<endl; 69 70 GetTop(S,w); 71 cout<<"After GetTop,w is "; 72 cout<<w<<endl; 73 int q=100; 74 Push(S,q); 75 GetTop(S,w); 76 cout<<w<<endl; 77 cout<<"-------------------------------------"<<endl; 78 cout<<"Test the function ‘Pop‘:"; 79 Pop(S,w); 80 cout<<w<<endl; 81 cout<<"After Pop a data,the top of stack is:"; 82 GetTop(S,w); 83 cout<<w<<endl; 84 return 0; 85 }
线性表的顺序存储结构和链式存储结构
...和链式存储结构,现在就对此做个简单的比较。因为栈是线性表的一种,顺序存储结构和链式存储结构实际是线性表的两种存储方式。而栈和队列都是两种重要的线性表结构。所以本文标题直接为线性表的顺序存储结构和链式存... 查看详情
顺序栈
1.定义栈是仅限定在表尾进行插入和删除操作的线性表。允许进行插入和删除的一端称为栈顶(也叫表尾),另一端为栈底。栈又称为后进先出的线性表。由于栈本身是一个线性表,所以线性表的顺序存储结构和链式存储结构对... 查看详情
数据结构与算法设计二——栈
...、插入、删除。问题:1.存储方式:顺序与链式2.线性表与线性结构同一线性表中的元素必定具有相同的特性,即属于同一数据对象,相邻数据元素之前存在着序偶关系。诸如此类由n个数据特性相同的元素构成的... 查看详情
栈的顺序存储和链式存储(代码片段)
...要的数据结构。从栈与队列的逻辑结构上来说,它们也是线性结构,与线性表不同的是它们所支持的基本操作是受到限制的,它们是操作受限的线性表,是一种限定性的数据结构。 栈(stack)又称堆栈,它是运算受限的线性... 查看详情
11201771010119穷吉(代码片段)
理论知识:一般将数据结构分为两大类:线性数据结构和非线性数据结构线性数据结构:线性表、栈、队列、串、数组和文件非线性数据结构:树和图。线性表:1.所有数据元素在同一个线性表中必须是相同的数据类型。2.线性... 查看详情
数据结构主要学啥内容
...理数据元素之间的关系。个人的一点见解参考技术A一、线性表(一)线性表的定义和基本操作(二)线性表的实现1.顺序存储结构2.链式存储结构3.线性表的应用二、栈、队列和数组(一)栈和队列的基本概念(二)栈和队列的... 查看详情
看完这篇文章还不会顺序表和链表,请寄刀片给我(代码片段)
文章目录一、线性表二、顺序表💦顺序表的概念和结构💦顺序表各接口实现(动图分析)三、链表💦链表的概念和结构💦链表的分类💦单链表各接口实现(动图分析)四、顺序表和链表的区别和联系一、线... 查看详情
线性表——顺序表与单链表学习小结
线性表线性表(linearlist)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串...线性表在逻辑上是线性结构,也就说是连续的一条直线。但... 查看详情
c/c++数据结构-完整代码受限线性表:栈(栈的顺序存储,栈的链式存储,就近匹配,中缀表达式和后缀表达式)(代码片段)
一、受限线性表:栈(Stack)1、栈的顺序存储(1)栈的基本概念概念:首先它是一个线性表,也就是说,栈元素具有线性关系,即前驱后继关系。只不过它是一种特殊的线性表而已。定义中说是在线... 查看详情
线性表之栈(代码片段)
栈的定义: 一种只能在一端进行插入或删除操作的线性表被称为栈,其中允许删除或插入的一端为栈顶,另一端为栈底,栈底固定不变; 栈的特点:先进后出,例如弹夹,先装的子弹最后才能出; 按照存储结构可以... 查看详情
线性结构-栈(代码片段)
...方法栈的应用二.顺序栈三.链栈栈和队列栈和队列都属于线性表属于"一对一"逻辑关系栈:“先进后出”队列:“先进先出”一栈一.什么是栈看图理解(概念只是辅助理解_理解了才算学会)栈只能从一端存取,另一端是封闭的在... 查看详情
第二章之线性表栈队列和线性表
线性表的存储结构(主要有两种):1、定长的顺序存储结构,也称顺序表或向量型的一维数组结构。数据结点之间的逻辑关系是通过数据结点的存储位置来反映的。2、边长的线性结构存储结构、大多实现为链接式存储结构。数... 查看详情
数据结构简单总结
一、思维导图二、重要概念一.数据结构1.逻辑结构集合、线性结构、树形结构、图形结构。2.存储结构常用的存储结构有顺序存储、链式存储、索引存储和哈希存储等。3.算法分析1)目标:正确性、可使用性、可读性、健壮性、时... 查看详情
数据结构系列栈与队列
栈定义栈是一种特殊的线性表 操作 存储结构从存储结构来看,分为顺序栈和链栈,同线性表的划分 应用递归-菲波那切数列后缀表达式-逆波兰表示 队列定义队列也是一种特殊的线性表 操作队列... 查看详情
java算法--稀疏数组
数据结构必要知识线性结构线性结构是最常用的数据结构,数据元素之间存在一对一的线性关系。线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构。顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的... 查看详情
线性表--单调栈(代码片段)
目录前言一、单调栈简介1.1单调递增栈1.2单调递减栈二、单调栈适用场景2.1寻找左侧第一个比当前元素大的元素2.2寻找左侧第一个比当前元素小的元素2.3 寻找右侧第一个比当前元素大的元素2.4 寻找右侧第一个比当前元素小的... 查看详情
数据结构编程求救
实验一线性表运算一、实验目的1、掌握线性表的结构特点。2、掌握线性表的基本操作:初始化,插入,删除,查找,判空,求线性表长度等运算在顺序存储结构和链式存储结构上的实现。3、通过本章实验帮助学生加深对C语言... 查看详情
《数据结构与算法》-3-栈和队列(代码片段)
...章节:《数据结构与算法》-1-绪论《数据结构与算法》-2-线性表《数据结构与算法》-3-栈和队列?上篇博客《数据结构与算法》-2-线性表中介绍了线性结构中的线性表的定义、基本操作以及线性表的两种存储方式:顺序存储与链... 查看详情