3.1 實現順序棧的基本運算
3.2 實現鏈棧基本運算
3.3 實現迴圈佇列的基本運算
3.4 實現鏈佇列的基本運算
3.1順序棧
#include#include#define ok 1
#define error 0
#define overflow 0
#define stack_init_size 100
#define stackincrement 10
typedef struct
sqstack;
int initstack(sqstack *s) /*構建乙個空順序棧*/
int judge(sqstack *s) /*判斷順序棧是否為空*/
int push(sqstack *s) /*在棧頂插入乙個新元素*/
scanf("%d", s->top);
s->top++;
return ok;
}int length(sqstack *s) /*輸出順序棧長度*/
printf("此順序棧的長度為:%d\n", n - 1);
return ok;
}int output(sqstack *s) /*輸出從棧頂到棧底的元素*/
int pop(sqstack *s) /*輸出出棧序列*/
int main()
(&s)->top--;
judge(&s); /*判斷棧s是否為空*/
length(&s); /*輸出棧長度*/
output(&s); /*輸出從棧頂到棧底的元素*/
pop(&s); /*輸出出棧序列*/
judge(&s); /*判斷棧s是否為空*/
3.2鏈棧
#include#include#define ok 1
#define error 0
typedef struct stacknode
stacknode, *linkstackptr;
int create(linkstackptr *top, linkstackptr *base) /*初始化鏈棧*/
int push(linkstackptr *top) /*入棧乙個新元素*/
int judge(linkstackptr *top, linkstackptr *base) /*判斷鏈棧是否為空*/
int length(linkstackptr *top, linkstackptr *base) /*輸出鏈棧長度*/
printf("此鏈棧長度為:%d\n", num+1);
return 0;
}int out(linkstackptr *top) /*輸出從棧頂到棧底的元素*/
printf("\n");
return ok;
}int pop(linkstackptr *top) /*輸出出棧序列*/
printf("%d ", (*top)->data);
printf("\n");
return ok;
}int main()
top = top->next;
judge(&top, &base); /*判斷棧是否為空*/
length(&top, &base); /*輸出棧長度*/
out(&top); /*輸出從棧頂到棧底的元素*/
pop(&top); /*輸出出棧序列*/
judge(&top, &base); /*判斷棧是否為空*/
3.3迴圈佇列
#include#include#define ok 1
#define error 0
#define overflow 0
#define maxqsize 10
typedef struct
sqqueue;
int initqueue(sqqueue *s) /*初始化迴圈佇列*/
int judge(sqqueue *s) /*判斷是否為空隊*/
int enqueue(sqqueue *s, int e) /*在隊尾插入乙個元素*/
int dequeue(sqqueue *s) /*在隊首出隊乙個元素*/
int length(sqqueue *s) /*輸出佇列長度*/
int main()
qnode, *queueptr;
typedef struct
linkqueue;
int initqueue(linkqueue *q) /*初始化鏈隊*/
int enqueue(linkqueue *q, int e) /*在隊尾插入乙個元素*/
int dequeue(linkqueue *q) /*在隊首出隊乙個元素*/
int judge(linkqueue *q) /*判斷鏈隊是否為空*/
int length(linkqueue *q) /*返回鏈隊長度*/
return i--;
}int main()
printf("出隊乙個元素:");
dequeue(&q); /*出隊乙個元素*/
printf("\n");
printf("該鏈隊長度為:%d\n", length(&q)); /*輸出佇列的長度*/
printf("請輸入元素個數:");
scanf("%d", &n);
printf("請輸入元素:");
for (i = 1; i <= n; i++) /*依次進隊元素*/
printf("該鏈隊長度為:%d\n", length(&q)); /*輸出佇列長度*/
printf("出隊序列為:");
int r = length(&q);
for (i = 1; i <= r; i++) /*輸出出隊序列*/
資料結構 棧 順序棧和鏈棧
順序棧 基於陣列的順序棧 include include include typedef enum status status typedef int elemtype typedef struct sqstack sqstack 函式宣告 基於陣列的順序棧 status initstack sqs...
順序棧 鏈棧 順序隊和鏈隊小結
順序棧和順序隊的儲存結構都為順序儲存,鏈棧和鏈隊的儲存結構為鏈式儲存。順序棧和順序隊為受約束的順序表 可以看成與陣列類似 鏈棧和鏈隊和單鏈表沒有什麼區別。如何寫出這些相應的程式 呢?本人認為有以下幾點 1 清楚順序棧 順序隊 鏈棧和鏈隊的結構及其基本性質,如 隊列為 先進先出 棧為 先進後出 棧需要...
資料結構 棧的實現(順序棧和鏈棧)
棧介面,描述棧的抽象資料型別,泛型引數t表示資料元素的資料型別 public inte ce sstack 棧有兩種基本的實現 順序棧,實現棧介面 public class seqstack implements sstack 預設構造,構造容量為64的空棧 public seqstack 判斷棧是...