考研資料結構 線性表 棧

2021-09-25 03:46:54 字數 2129 閱讀 1534

1.棧是一種線性表,主要特點就是只允許在一端進行插入或刪除操作的線性表。

2.棧頂:(top)線性表允許進行插入和刪除的一端

棧底:(bottom) 是固定的,不允許進行插入和刪除的一端

採用順序儲存的棧被稱為「順序棧」,通常順序儲存結構由乙個「一維陣列」和乙個記錄「棧頂」元素位置的變數組成。

1.結構定義

#define maxsize 100

typedef int elemtype;

//順序棧的結構

typedef struct sequenstack;

sequenstack s;

棧頂指標:s.top ,初始時設定s.top=-1;

棧頂元素:s.data[s.top];

進棧操作(push):棧不滿時,棧頂指標先加1,再送值到棧頂元素

出棧操作(pop):棧非空時,先取棧頂元素值,再將棧頂指標減1。

棧空條件:s.top==-1;

棧滿條件:s.top==maxsize-1;

2.初始化

void initstack(sequenstack &s)		//使用&可以修改傳入的s棧的內容

3.判斷棧是否為空

bool stackempty(sequenstack s)

else

}

4.push入棧操作

bool push(sequenstack &s, elemtype x)

//相當於 s.top++; s.data[s.top]=x;

s.data[++s.top] = x;

return true;

}

5.pop出棧操作

第一種是修改引數x的值

bool pop(sequenstack &s, elemtype &x)		

第二中是返回的值是出棧的值

elemtype pop(sequenstack &s)

6.讀取棧頂元素

bool gettop(sequenstack s, elemtype &x)

分析:使兩個棧分別從陣列的兩頭開始向中間擴充套件,當兩個棧的棧頂指標相遇時,表示兩個棧都滿了。

1.共享棧的結構

#define maxsize 100

typedef int elemtype;

typedef struct ;

dstack s;

2.初始化

void initdstack(dstack &s)

3.push入棧

void push(dstack * ptrs, elemtype x, int tag)

if (tag == 1) //等於1時讓第乙個口進

else

}

4.pop出棧

elemtype pop(dstack *ptrs, int tag)

else

} else

else

}}

採用鏈式儲存結構的棧叫做鏈棧,通常採用單鏈表實現,規定鏈棧沒有頭結點

插入和刪除操作只能在鏈棧的棧頂進行。

1.棧的鏈式結構定義

typedef struct linknode *linkstack;
2.初始化

linkstack initstack()

3.判斷棧是否為空

int isempty(linkstack s)

考研資料結構 線性表

線性表是具有相同特徵資料元素的乙個有限序列。元素個數叫做線性表的長度,n n 0 表示,n 0 空表 只有乙個表頭元素,只有乙個表尾元素。表頭無前驅,表尾無後繼,除表頭和表尾外,其他元素只有乙個直接前驅,也只有乙個直接後繼。順序儲存結構 順序表 和鏈式儲存結構 鍊錶 兩種。順序表 連續儲存 順序儲存...

資料結構考研筆記 線性表

1.線性表的定義 線性表是具有相同特性元素的乙個有限序列。所含元素個數 線性表長度。2.線性表的邏輯特性 只有乙個表頭元素,乙個表尾元素,表頭元素沒有前驅,表尾元素沒有後繼,其他元素只有乙個直接前驅,乙個直接後繼。3.線性表的儲存結構 1 順序儲存結構 順序表 隨機訪問特性 需占用連續的儲存空間 做...

考研資料結構 線性表 佇列

def 佇列是一種操作受限的線性表,與棧相同也不同,不同的是佇列是在一端進入 入隊 另一端出去 出隊 操作特性是先進先出。通常由乙個一維陣列和乙個記錄佇列頭元素位置的變數front以及乙個記錄尾元素位置的變數rear組成。1.佇列的順序儲存結構定義 define maxsize 100 佇列順序儲存...