棧順序儲存 鏈式儲存

2021-07-05 10:24:15 字數 2550 閱讀 1741

1.棧的順序儲存之動態儲存

#include#include#define ok 1

#define false 0

#define true 1

#define stack_init_size 20 //儲存空間初始分配量

#define stackincrement 5 //儲存空間分配增量

typedef int selemtype;

typedef int status;

typedef struct

sqstack;

status initstack(sqstack *s)//構造乙個空棧

status push(sqstack *s, selemtype e)//入棧

*(s->top) = e;

s->top++;//插入新元素後,top指標+1

return ok;

}status gettop(sqstack *s, selemtype *e)//用e返回棧頂元素

status pop(sqstack *s,selemtype *e)//刪除棧頂元素,用e返回其值

int stacklength(sqstack *s)

status clearstack(sqstack *s)

status destroystack(sqstack *s)

int main()

break;

case 2:

break;

case 3:

break;

case 4:

break;

case 5:

break;

case 6:clearstack(&s); break;

case 7:destroystack(&s); break;

}} while (cord > 0 && cord <= 7);

return 0;

}

另一種較簡單的寫法

//用陣列的話不用銷毀,沒用指標不用銷毀,好像是自動銷毀#include#include#define max 20  

typedef struct sqstack

sqstack;

int initstack(sqstack *s)

int push(sqstack *s)

else

printf("push success\n");

return 1; }}

int get_sqstack(sqstack *s, int *e)

else

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

return 1;

}int pop_sqstack(sqstack *s, int *e)

else (*e = s->elem[s->top]);

s->top--;

return 1;

}void outline(sqstack *s)

int main()

break;

case 2:break;

case 3:break;

case 4:break;

case 5:break;

} } while (cord <= 5 && cord > 0);

return 0;

}

棧的鏈式儲存(雙結構體)

#include #include #define status int

#define ok 1

typedef struct stacknode//定義棧結點的結構

stacknode;

typedef struct linkstack//定義棧

linkstack;

status initlist(linkstack *s2)//初始化棧

status push(linkstack *s2, int x)//入棧

status pop(linkstack *s2, int *e)//刪除棧頂元素,用e返回其值

status stackempty(linkstack *s2)//判斷棧空

status clearstack(linkstack *s2)

s2->count = 0;

return ok;

}void outline(linkstack *s2)

printf("\n");

}int main()

break;

case 2:

break;

case 3:

break;

case 4:

break;

case 5:if (clearstack(&s2) == ok) printf("清空棧成功\n"); break;

case 6:

break;

} } while (cord<9);

return 0;

}

棧的順序儲存結構和鏈式儲存結構

在表尾進行插入和刪除操作的線性表 仍然滿足線性表的操作,只是在push和pop有些區別 棧頂 top 允許插入和刪除,另一端稱棧底 bottom 不含任何資料元素的棧叫空棧。棧 後進先出 last in first out 的線性表,簡稱lifo結構。棧的插入稱為進棧,也稱壓棧,入棧。棧的刪除稱為出...

棧的順序儲存實現及鏈式儲存實現

include include define size 100 typedef int elemtype typedef struct stackstack void init stack s 初始化 intpush stack s,elemtype e 入棧 s s s top e 從s 1 開始...

C 棧的順序儲存和鏈式儲存的實現

棧是最常見的資料結構,其特點是後進先出 last in first out 也是鍊錶的特殊形式,所以和鍊錶一樣,有兩種儲存方式,第一是順序儲存的棧,方便快速讀寫資料,但是棧的長度必須先固定 第二種是鏈式儲存的棧,可以不用定義棧的長度,可以大量插入資料,如果不是物理記憶體使用完的話,可以儲存大量的資料...