1. 程式人生 > >資料結構順序棧和鏈棧基本操作----c++實現

資料結構順序棧和鏈棧基本操作----c++實現

順序棧:

#include<iostream>
using namespace std;
#define MaxSize 50
class SeqStack{
private:
	int data[MaxSize];
    int top;
public:
    void initStack();	//初始化棧
    void Push(int elem);//入棧
	int  Pop();//出棧
	bool isEmpty();//判斷棧是否為空
	int getLength();//得到棧的長度
	void visit();//遍歷棧裡的資料
};
void SeqStack::initStack()
{
	for(int i=0;i<MaxSize;i++)
	data[i]=0;
    top=-1;
}
void SeqStack::Push(int elem)
{
	if(top==MaxSize)
		return;
	top++;
    data[top]=elem;
}
int SeqStack::Pop()
{
    if(top==-1)
		return 0;
    int elem= data[top];
	top--;
	return elem;
}
bool SeqStack::isEmpty()
{
    if(top==-1)
		return true;
	else return false;
}
int SeqStack::getLength()
{
     return top++;
}
void SeqStack::visit()
{
    while(!isEmpty())
    cout<<Pop()<<"  ";
}


鏈棧:

#include<iostream>
using namespace std;
struct linkStack{
 char data;
 linkStack *next;
};
//鏈棧的初始化
linkStack * initStack()
{
 linkStack *top=new linkStack;
 top=NULL;
 return top;
}
//判斷鏈棧是否為空
bool isEmpty(linkStack *stack)
{
 if(NULL==stack)
	 return true;
 return false;
}
//鏈棧入棧
linkStack * push(linkStack *stack,char data)
{
 linkStack *node=new linkStack;
 node->data=data;
 node->next=stack;
 stack=node;
 return stack; 
}
//鏈棧出棧
linkStack * pop(linkStack *stack)
{
 if(stack!=NULL)
 {
  cout<<stack->data;
  stack=stack->next;
 }else
	 cout<<"是空棧!";
return stack;
}
//鏈棧的長度
int getLength(linkStack *stack)
{
	int length=0;
  if(stack==NULL)
	  return 0;
  while(stack!=NULL)
  {
    length++;
    stack=stack->next;
  }
  return length;
}
//取出棧頂元素
int getTop(linkStack *stack)
{
    int temp;
   temp=stack->data;
   return temp;
}

int main()
{
	linkStack *stack=initStack();

	for(int i=0;i<9;i++)
	{
		char c=i+96;
	  stack=push(stack,c);
	}
	for(int j=0;j<9;j++)
	{
	  stack=pop(stack);
	}
   return 0;
}



相關推薦

佇列的基本操作實現

1. 實驗目的 熟練掌握棧和佇列的抽象資料型別,能在相應的應用問題中正確選用它們,熟練掌握棧和佇列的實現方法(順序和鏈式),兩種儲存結構和基本操作的實現演算法,注意空和滿的判斷條件及它們的描述方法,掌握迴圈佇列與其它順序結構實現上的不同及解決辦法,熟悉各種佇列的基本操作在迴圈佇列上的實現

資料結構順序基本操作----c++實現

順序棧: #include<iostream> using namespace std; #define MaxSize 50 class SeqStack{ private: int

資料結構---------------------------------------順序實現

今天想把這個順序棧實現一下,就翻閱資料整理了一下。 下面分別給出順序棧和鏈棧的相應功能的實現。 1)順序棧的圖示: 下面是程式碼: #include<iostream> #include<algorithm> #include<str

資料結構學習心得——順序

棧的定義 棧是限定盡在表尾進行插入或者刪除操作的線性表。因此,對棧來說,表尾端有其特殊含義,稱為棧頂,相應地,表頭端稱為棧底。不含元素的空表稱為空棧。棧又稱為後進先出的線性表。 和線性表類似,棧也有兩種儲存表示方法。 順序棧,即棧的順序儲存結構是利用一

定義及其基本操作順序

 棧和佇列是兩種特殊的線性表,它們的邏輯結構和線性表相同,只是其運算規則較線性表有更多的限制,故又稱它們為運算受限的線性表。棧和佇列被廣泛應用於各種程式設計中。棧的定義及基本運算1、棧的定義     棧(Stack)是限制僅在表的一端進行插入和刪除運算的線性表。  (1)通常稱插入、刪除的這一端為棧

資料結構:實驗四佇列的基本操作實現及其應用

一、實驗目的 1,熟練掌棧和佇列的結構特點,掌握棧和佇列的順序儲存和鏈式儲存結構和實現。 2,學會使用棧和佇列解決實際問題。 二、實驗內容 1,自己確定結點的具體資料型別和問題規模: 分別建立一個順序棧和鏈棧,實現棧的壓棧和出棧操作。 分別建立一個順

實驗3:佇列的基本操作實現及其應用——順序佇列佇列

實驗3:棧和佇列的基本操作實現及其應用一、實驗目的1、   熟練掌棧和佇列的結構特點,掌握棧和佇列的順序儲存和鏈式儲存結構和實現。2、      學會使用棧和佇列解決實際問題。二、實驗內容1、自己確定結點的具體資料型別和問題規模:分別建立一個順序棧和鏈棧,實現棧的壓棧和出棧操

實驗3:佇列的基本操作實現及其應用——順序

實驗3:棧和佇列的基本操作實現及其應用一、實驗目的1、   熟練掌棧和佇列的結構特點,掌握棧和佇列的順序儲存和鏈式儲存結構和實現。2、      學會使用棧和佇列解決實際問題。二、實驗內容1、自己確定結點的具體資料型別和問題規模:分別建立一個順序棧和鏈棧,實現棧的壓棧和出棧操

順序(stack)

順序棧和鏈棧(stack)   棧的定義:它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。向一個棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從一個棧刪除元素又稱作出棧或退

資料結構---線性表(

Stack.h:結構定義和函式申明 #ifndef __STACK_H__ #define __STACK_H__ //一些庫函式的標頭檔案包含 #include <string.h> #include <ctype.h> #include <malloc.h&

實驗三:佇列的基本操作實現及其應用——順序

一、實驗目的1、   熟練掌棧和佇列的結構特點,掌握棧和佇列的順序儲存和鏈式儲存結構和實現。2、      學會使用棧和佇列解決實際問題。二、實驗內容1、自己確定結點的具體資料型別和問題規模:分別建立一個順序棧和鏈棧,實現棧的壓棧和出棧操作。分別建立一個順序佇列和鏈佇列,實

實驗4:佇列的基本操作實現及其應用——

一、實驗目的 1、   熟練掌棧和佇列的結構特點,掌握棧和佇列的順序儲存和鏈式儲存結構和實現。 2、      學會使用棧和佇列解決實際問題。 二、實驗內容 1、自己確定結點的具體資料型別和問題規模: 分別建立一個順序棧和鏈棧,實現棧的壓棧和出棧操作。 分別建

實驗4:佇列的基本操作實現及其應用之《順序佇列》

實驗4:棧和佇列的基本操作實現及其應用之順序佇列 一、實驗目的 1、   熟練掌棧和佇列的結構特點,掌握棧和佇列的順序儲存和鏈式儲存結構和實現。 2、   學會使用棧和佇列解決實際問題。 二、實驗內容 1、自己確定結點的具體資料型別和問題規模: 分別建立一個順

實驗4:佇列的基本操作實現及其應用之《佇列》

實驗4:棧和佇列的基本操作實現及其應用之鏈佇列 一、實驗目的 1、   熟練掌棧和佇列的結構特點,掌握棧和佇列的順序儲存和鏈式儲存結構和實現。 2、   學會使用棧和佇列解決實際問題。 二、實驗內容 1、自己確定結點的具體資料型別和問題規模: 分別建立一個

C++學習——順序的區別

C++中棧有順序棧和鏈棧之分,在順序棧中,定義了棧的棧底指標(儲存空間首地址base)、棧頂指標top以及順序儲存空間的大小stacksize(個人感覺這個資料成員是可以不用定義的) //順序棧資料結構C++類宣告(基類) template <t

實驗三、順序

一、實驗目的 1、 熟練掌棧的結構特點,掌握棧的順序儲存和鏈式儲存結構和實現。 2、 學會使用棧解決實際問題。 二、實驗內容 1、自己確定結點的具體資料型別和問題規模: 分別建立一個順序棧和鏈棧,實現棧的壓棧和出棧操作。 三、程式碼 鏈棧

實驗三 順序

一、實驗目的 1、   熟練掌棧和佇列的結構特點,掌握棧和佇列的順序儲存和鏈式儲存結構和實現。 2、      學會使用棧和佇列解決實際問題。 二、實驗內容 1、自己確定結點的具體資料型別和問題規模: 分別建立一個順序棧和鏈棧,實現棧的壓棧和出棧操作。 分別建立一

實驗四:順序

#ifndef SeqStack_H #define SeqStack_H const int StackSize=10; template class SeqStack { public: SeqStack(); ~SeqStack(){} void Push(DataType x); //

8.基本數據結構-順序

__main__ 就是 def pytho sel 硬件 居住 back 申請 一.內存   - 計算機的作用:對數據進行存儲和運算。首先我們需要知道我們目前使用的計算機都是二進制的計算機,就以為著計算機只可以存儲和運算二進制的數據。例如下載好的一部電影,該電影可以存儲到

C語言實現佇列(佇列的基本操作)

棧: 棧:棧(stack)又名堆疊,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。 特點:先進後出 stack.h #pragma once #include <stdio.h> #include <