資料結構實驗3 順序棧 鏈棧 迴圈佇列 鏈隊

2021-09-28 12:03:23 字數 3709 閱讀 3608

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 判斷棧是...