6线性表-栈-顺序存储

Makeacommitmenttoyourownmind! Makeacommitmenttoyourownmind!     2022-09-11     625

关键词:

自己简直是强迫症晚期,上次因为对访问结构体成员该用什么方法困惑了很久,导致没把顺序存储的捣鼓出来(明明比链式的要好写)

今天花了个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-线性表中介绍了线性结构中的线性表的定义、基本操作以及线性表的两种存储方式:顺序存储与链... 查看详情