資料結構 特殊的線性表 棧

2021-09-26 10:36:05 字數 1786 閱讀 3236

棧是一種特殊的線性表,只允許在一段插入和刪除,所以一般畫圖總把棧化成乙個杯子,在杯口進入元素,在杯口移出元素。故有三個概念:

因為線性表可以用順序儲存結構和鏈式儲存結構表示,因此棧也可以。

#define false 0

#define true 1

#define stack_size 50

#define stack_element_type int

/* 順序棧結構體型別 */

typedef struct

seqstack;

void initstack(seqstack *s)

int isempty(seqstack *s)

else

}

int isfull(seqstack *s)

else

}

int push(seqstack *s, stack_element_type value)

// 修改棧頂元素下標

s->top++;

s->elem[s->top] = value;

return true;

}

int pop(seqstack *s, stack_element_type *value)

*value = s->elem[s->top];

// 修改棧頂元素下標

s->top--;

return true;

}

關於順序棧的幾點說明:

#define false 0

#define true 1

#define stack_element_type int

/* 鏈棧節點 */

typedef struct node linkstacknode;

/* 鏈棧結構 */

typedef struct linkstack;

初始化

void initstack(linkstack *s)

是否為空棧

int isempty(linkstack *s)

else

}

入棧

int push(linkstack *s, stack_element_type value)

temp->data = value;

temp->next = s->top;

// 將新元素作為棧頂指標

s->top = temp;

// 鏈棧長度加一

s->length++;

return true;

}

出棧

int pop(linkstack *s, stack_element_type *value)

linkstacknode *temp = s->top;

// 移動棧頂指標

s->top = temp->next;

// 鏈棧長度減一

s->length--;

// 將鏈棧元素返回

*value = temp->data;

// 釋放temp空間

free(temp);

return true;

}

特殊線性表 棧

定義 限定僅在表尾進行插入和刪除操作的線性表。操作特性 後進先出。注意 棧只是對錶插入和刪除操作的位置進行了限制,並沒有限定插入和刪除操作進行的時間。const int max size 100 template class t class seqstack template class t voi...

資料結構棧 線性表實現

棧的定義 棧是一種特殊的表這種表只在表頭進行插入和刪除操作。因此,表頭對於棧來說具有特殊的意義,稱為棧頂。相應地,表尾稱為棧底。不含任何元素的棧稱為空棧。而本次給大家介紹用線性表實現的棧。如圖 這裡介紹雙向鍊錶的常用操作 l 建立棧 l 銷毀棧 l 清空棧 l 壓棧 l 出棧 l 返回棧頂元素 l ...

考研資料結構 線性表 棧

1.棧是一種線性表,主要特點就是只允許在一端進行插入或刪除操作的線性表。2.棧頂 top 線性表允許進行插入和刪除的一端 棧底 bottom 是固定的,不允許進行插入和刪除的一端 採用順序儲存的棧被稱為 順序棧 通常順序儲存結構由乙個 一維陣列 和乙個記錄 棧頂 元素位置的變數組成。1.結構定義 d...