栈是一种线性表,它的特点是什么?
1个回答
展开全部
栈是一种线性表,它的特点是什么?
栈(stack)在电脑科学中是限定仅在表尾进行插入或删除操作的线形表。
栈是一种资料结构,它按照先进后出的原则储存资料,先进入的资料被压入栈底,最后的资料在栈顶,需要读资料的时候从栈顶开始弹出资料(最后一个数据被第一个读出来)。
栈是只能在某一端插入和删除的特殊线性表。用桶堆积物品,先堆进来的压在底下,随后一件一件往堆。取走时,只能从上面一件一件取。堆和取都在顶部进行,底部一般是不动的。
栈就是一种类似桶堆积物品的资料结构,进行删除和插入的一端称栈顶,另一堆称栈底。插入一般称为进栈(PUSH),删除则称为退栈(POP)。 栈也称为后进先出表(LIFO表)。
1、进栈(PUSH)演算法
①若TOP≥n时,则给出溢位资讯,作出错处理(进栈前首先检查栈是否已满,满则溢位;不满则作②);
②置TOP=TOP+1(栈指标加1,指向进栈地址);
③S(TOP)=X,结束(X为新进栈的元素);
2、退栈(POP)演算法
①若TOP≤0,则给出下溢资讯,作出错处理(退栈前先检查是否已为空栈, 空则下溢;不空则作②);
②X=S(SOP),(退栈后的元素赋给X);
③TOP=TOP-1,结束(栈指标减1,指向栈顶)。
栈和伫列都是特殊线性表,简述他们的区别(特殊性)
栈是先进后出,队是先进先出,这是他们存取上的根本不同
栈和线性表有什么区别?
一般线性表使用阵列来表示的
线性表一般有插入、删除、读取等对于任意元素的操作
而栈只是一种特殊的线性表
栈只能在线性表的一端插入(称为入栈,push)或者读取栈顶元素或者称为“弹出、出栈”(pop)。
栈在阵列的基础上可以用一个指向栈顶的标骇符来表示,如a表示栈,则a[top]就表示栈顶元素
栈就是所谓的“先进后出,First in last out, FILO”
堆叠是一种结构较简单的线性表,它只允许在表的一端进行资料的插入和删除操作 20分
stack.h: header file
class Stack {
int MaxStack;
int EmptyStack; int top;
char* items;
public:
Stack(int);
~Stack();
void push(char);
char pop();
int empty();
int full();
};
-------------------------------
stack.cpp: stack functions
#include "stack.h"
Stack::Stack(int size) {
MaxStack = size;
EmptyStack = -1;
top = EmptyStack;
items = new char[MaxStack];
}
Stack::~Stack() {delete[] items;}
void Stack::push(char c) {
items[++top] = c;
}
char Stack::pop() {
return items[top--];
}
int Stack::full() {
return top + 1 == MaxStack;
}
int Stack::empty() {
return top == EmptyStack;
}
-------------------------------
stackmain.cpp: use stack
#include
#include "stack.h"
int main() {
Stack s(10); 10 chars
char ch;
while ((ch = cin.get()) != '\n')
if (!s.full()) s.push(ch);
while (!s.empty())
cout << s.pop();
cout << endl;
return 0;
}
串是一种特殊的线性表,其特殊性体现在什么地方
串是一种特殊的线性表,其特殊性体现在资料元素是一个字元
串值也可用连结串列来储存,由于串的资料元素是一个字元,它只有8位二进位制数, 因此用连结串列储存时,通常一个结点中存放的不是一个字元,而是一个子串,例如: 在编辑系统中,整个文字编辑区可以看成是一个串,每一行是一个子串,构成一个结点。
栈和线性表有什么区别
一般线性表使用阵列来表示的
线性表一般有插入、删除、读取等对于任意元素的操作
而栈只是一种特殊的线性表
栈只能在线性表的一端插入(称为入栈,push)或者读取栈顶元素或者称为“弹出、出栈”(pop)。
栈在阵列的基础上可以用一个指向栈顶的识别符号来表示,如a表示栈,则a[top]就表示栈顶元素
栈就是所谓的“先进后出,First in last out, FILO”
( )是一种先进先出的线性表。 A 栈 B伫列 C杂凑表(散列表) D二叉树
B 伫列
栈的概念是弹压,就像子弹壳装弹,一粒一粒压进去,但是打出来的时候是从上面打骇来的,最先压进去的最后弹出来,如果进去顺序是123,打出来顺序是321,这就是后进先出
伫列的概念就是我们平时排队,按次序来,你排在第1个,那你就第一个轮到,就是先进先出,先到先来
栈是插入和删除只能固定在一端进行的线性表,也称“后进先出表”。
有2个问题需要澄清:
1.栈是一种后进先出的资料结构,只能在末端进行插入和删除的操作。应该说成是只能线上性表的一端进行插入和删除。说成末端,就认为的把线性表分成开始端和结束端了。但由于线性表中元素只具有线性关系,并没有明确的起始元素和终止元素。
2.函式呼叫之所以需要栈,是因为函式执行过程中,还能会巢状呼叫其他函式,但无论巢状呼叫多少个函式,总是要遵循一个原则:后被呼叫的函式要先执行完毕,程式要回到上一层函式的呼叫处继续执行,为了实现这个机制,才设计了栈这种后进先出的资料结构。如果把函式呼叫看成罗餐盘的话,而把当你去盘子的时候,肯定先取走最后一个罗上去的盘子,那么函式执行结束,函式呼叫返回就相当于你在取盘子。
栈(stack)在电脑科学中是限定仅在表尾进行插入或删除操作的线形表。
栈是一种资料结构,它按照先进后出的原则储存资料,先进入的资料被压入栈底,最后的资料在栈顶,需要读资料的时候从栈顶开始弹出资料(最后一个数据被第一个读出来)。
栈是只能在某一端插入和删除的特殊线性表。用桶堆积物品,先堆进来的压在底下,随后一件一件往堆。取走时,只能从上面一件一件取。堆和取都在顶部进行,底部一般是不动的。
栈就是一种类似桶堆积物品的资料结构,进行删除和插入的一端称栈顶,另一堆称栈底。插入一般称为进栈(PUSH),删除则称为退栈(POP)。 栈也称为后进先出表(LIFO表)。
1、进栈(PUSH)演算法
①若TOP≥n时,则给出溢位资讯,作出错处理(进栈前首先检查栈是否已满,满则溢位;不满则作②);
②置TOP=TOP+1(栈指标加1,指向进栈地址);
③S(TOP)=X,结束(X为新进栈的元素);
2、退栈(POP)演算法
①若TOP≤0,则给出下溢资讯,作出错处理(退栈前先检查是否已为空栈, 空则下溢;不空则作②);
②X=S(SOP),(退栈后的元素赋给X);
③TOP=TOP-1,结束(栈指标减1,指向栈顶)。
栈和伫列都是特殊线性表,简述他们的区别(特殊性)
栈是先进后出,队是先进先出,这是他们存取上的根本不同
栈和线性表有什么区别?
一般线性表使用阵列来表示的
线性表一般有插入、删除、读取等对于任意元素的操作
而栈只是一种特殊的线性表
栈只能在线性表的一端插入(称为入栈,push)或者读取栈顶元素或者称为“弹出、出栈”(pop)。
栈在阵列的基础上可以用一个指向栈顶的标骇符来表示,如a表示栈,则a[top]就表示栈顶元素
栈就是所谓的“先进后出,First in last out, FILO”
堆叠是一种结构较简单的线性表,它只允许在表的一端进行资料的插入和删除操作 20分
stack.h: header file
class Stack {
int MaxStack;
int EmptyStack; int top;
char* items;
public:
Stack(int);
~Stack();
void push(char);
char pop();
int empty();
int full();
};
-------------------------------
stack.cpp: stack functions
#include "stack.h"
Stack::Stack(int size) {
MaxStack = size;
EmptyStack = -1;
top = EmptyStack;
items = new char[MaxStack];
}
Stack::~Stack() {delete[] items;}
void Stack::push(char c) {
items[++top] = c;
}
char Stack::pop() {
return items[top--];
}
int Stack::full() {
return top + 1 == MaxStack;
}
int Stack::empty() {
return top == EmptyStack;
}
-------------------------------
stackmain.cpp: use stack
#include
#include "stack.h"
int main() {
Stack s(10); 10 chars
char ch;
while ((ch = cin.get()) != '\n')
if (!s.full()) s.push(ch);
while (!s.empty())
cout << s.pop();
cout << endl;
return 0;
}
串是一种特殊的线性表,其特殊性体现在什么地方
串是一种特殊的线性表,其特殊性体现在资料元素是一个字元
串值也可用连结串列来储存,由于串的资料元素是一个字元,它只有8位二进位制数, 因此用连结串列储存时,通常一个结点中存放的不是一个字元,而是一个子串,例如: 在编辑系统中,整个文字编辑区可以看成是一个串,每一行是一个子串,构成一个结点。
栈和线性表有什么区别
一般线性表使用阵列来表示的
线性表一般有插入、删除、读取等对于任意元素的操作
而栈只是一种特殊的线性表
栈只能在线性表的一端插入(称为入栈,push)或者读取栈顶元素或者称为“弹出、出栈”(pop)。
栈在阵列的基础上可以用一个指向栈顶的识别符号来表示,如a表示栈,则a[top]就表示栈顶元素
栈就是所谓的“先进后出,First in last out, FILO”
( )是一种先进先出的线性表。 A 栈 B伫列 C杂凑表(散列表) D二叉树
B 伫列
栈的概念是弹压,就像子弹壳装弹,一粒一粒压进去,但是打出来的时候是从上面打骇来的,最先压进去的最后弹出来,如果进去顺序是123,打出来顺序是321,这就是后进先出
伫列的概念就是我们平时排队,按次序来,你排在第1个,那你就第一个轮到,就是先进先出,先到先来
栈是插入和删除只能固定在一端进行的线性表,也称“后进先出表”。
有2个问题需要澄清:
1.栈是一种后进先出的资料结构,只能在末端进行插入和删除的操作。应该说成是只能线上性表的一端进行插入和删除。说成末端,就认为的把线性表分成开始端和结束端了。但由于线性表中元素只具有线性关系,并没有明确的起始元素和终止元素。
2.函式呼叫之所以需要栈,是因为函式执行过程中,还能会巢状呼叫其他函式,但无论巢状呼叫多少个函式,总是要遵循一个原则:后被呼叫的函式要先执行完毕,程式要回到上一层函式的呼叫处继续执行,为了实现这个机制,才设计了栈这种后进先出的资料结构。如果把函式呼叫看成罗餐盘的话,而把当你去盘子的时候,肯定先取走最后一个罗上去的盘子,那么函式执行结束,函式呼叫返回就相当于你在取盘子。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询