棧是一種特殊的線性表,只允許在一段插入和刪除,所以一般畫圖總把棧化成乙個杯子,在杯口進入元素,在杯口移出元素。故有三個概念:
因為線性表可以用順序儲存結構和鏈式儲存結構表示,因此棧也可以。
#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...