順序表 順序棧 順序佇列的基本概念

2021-10-09 12:37:35 字數 954 閱讀 4249

//自定義的資料內容data

typedef struct

data;

順序表
typedef struct

sqlist;

順序表建立只需用 base 去 new乙個足夠的空間 -> sqlist l; l.base = new data [maxsize]; 並設初始長度 l.length=0;

順序表可以隨機訪問 -> l.base[i-1] (順序表第i個資料元素) 所以無論是查詢,插入,遍歷都可用隨機訪問進行處理

順序棧
typedef struct

sqstack;

棧的建立同樣是用 base 去 new乙個足夠的空間,但區別在於棧的兩個指標base和top只有top用於入棧和出棧使之可以**先出,base只負責開闢空間的頭位址 空棧 s.top=s.base;

入棧 -> data e; s.top++=e;

出棧 -> e=–s.top;

注意:top始終是棧頂元素的下一位,所以出入棧注意++ --的是前置還是後置

順序佇列
typedef struct

sqquene;

佇列的建立同樣是用 base 去 new乙個足夠的空間,和順序表區別在於用兩個「指標」控制佇列先入先出,起始時空佇列 q.front=q.rear=0;

入佇列 尾rear++,出佇列 頭front++

直線佇列通常會浪費空間,所以我們直接使用迴圈佇列

當(q.rear+1)% maxsize=q.front時 隊滿, 當q.rear=q.front時隊空

入隊判斷是否隊滿,若不滿 -> q.base[q.rear]=e; q.rear=(q.rear+1)% maxsize;

出隊判斷是否為空,若不空 -> q.front=(q.front+1)% maxsize;

佇列 基本概念 順序佇列

一 基本概念 佇列 queue 是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。佇列是一種先進先出 first in first out 的線性表,簡稱fifo。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。佇列基本操作 initqueue 初始化佇列 enqueue 進佇列 dequ...

順序棧和順序佇列

1.棧的定義 棧是限定在表尾進行插入和刪除操作的線性表 把允許插入和刪除的一端稱為棧頂 top 另一端稱為棧底 bottom 不含任何資料元素的棧稱為空棧。棧又稱為後進先出的線性表。棧的插入操作,叫做進棧,也稱為壓棧,入棧。子彈入彈夾 棧的刪除操作,叫做出棧,也有的叫做彈棧。1 順序棧的進棧操作 插...

順序棧 鏈棧 順序佇列 鏈佇列區別

順序棧的主要特徵是用乙個陣列實現棧的儲存,top指標確定棧頂元素位置 定義形式如下 define max 100 template class seqstack void push t x t gettop t pop bool isempty bool isfull int getsize pri...