兩個程式的功能都是輸入0就出棧(出佇列),輸入1就是入棧(入佇列),輸入-1結束
棧:
/*
* stack.c
* * created on: feb 22, 2016
* author: wing
*//*
* stack.c
* * created on: feb 22, 2016
* author: wing
*/#include#include#define max 10
struct stack;
int pop(struct stack *s)
else }
int push(struct stack *s)
else }
int main(void)
scanf("%d",&n);
} return 0;
}
用鍊錶來實現就是:
/*
* stack.c
* * created on: feb 22, 2016
* author: wing
*/#include#includestruct node;
int pop(struct node **s)
else
else
return 0; }}
int push(struct node **s)
int main(void)
scanf("%d",&n);
} return 0;
}
佇列,為了方便判斷佇列上溢和下溢,這裡引入了乙個q->n(佇列元素個數),另外採用取餘操作方便一些:
/*
* queue.c
* * created on: feb 22, 2016
* author: wing
*/#include#include#define max 5
struct queue;
int deque(struct queue *q)
else }
int enque(struct queue *q)
else }
int main(void)
scanf("%d",&n);
} return 0;
}
同樣的,用鍊錶來實現就是:
/*
* queue.c
* * created on: feb 22, 2016
* author: wing
*/#include#includestruct node;
struct queue;
int deque(struct queue *q)
else
if (q->head->next==null)
else }
int enque(struct queue *q)
else }
int main(void)
scanf("%d",&n);
} return 0;
}
p33鏈結的棧和佇列
一 鏈棧的定義與運算 鏈棧 即鏈結堆疊 是棧的鏈結儲存表示,或者說它是只允許在表頭進行插入和刪除運算的單鏈表,此時單鏈表的表頭指標叫做棧頂指標。乙個鏈棧的示意圖如下圖所示,其中hs 表示棧頂指標。設 hs的型別為 linklist 指標型別 資料元素 x的型別為 elemtype,則在以hs 為棧頂...
棧和佇列 單調佇列 單調棧
講解部落格鏈結 一 單調棧 1 什麼是單調棧?單調棧是指乙個棧內部元素具有嚴格單調性 單調遞增,單調遞減 的一種資料結構。2 單調棧的兩個性質 滿足從棧頂到棧底具有嚴格的單調性 滿足後進先出的特徵,越靠近棧底的元素越早的進棧。3 元素進棧的過程 對於當前進棧元素x 如果x 棧頂元素,x 進棧。否則 ...
棧和佇列 佇列
佇列 又一種特殊的線性表 佇列 queue 是只允許在一端進行插入,而在另一端進行刪除的運算受限的線性表 允許刪除的一端稱為隊頭 front 允許插入的一端稱為隊尾 rear 當佇列中沒有元素時稱為空佇列。佇列的修改是依先進先出的原則進行的。新來的成員總是加入隊尾 即不允許 加塞 每次離開的成員總是...