棧(stack)實現的是乙個後進先出策略。元素彈出的順序正好和它們壓入的次序相反。s.top表示棧頂元素,s.size表示棧的大小。如果試圖對乙個s.top=0的棧進行彈出操作,則稱棧下溢。如果s.top超過了s.size,則稱棧上溢。
這裡使用動態分配記憶體的方式實現棧,並可以動態的調整棧的大小,如有錯誤敬請指正。
typedef
struct item item_t;
#ifndef stdio_h
#define stdio_h
#include
#endif
#ifndef stdlib_h
#define stdlib_h
#include
#endif
#ifndef item_h
#define item_h
#include "item.h"
#endif
typedef struct stack
stack_t;
int stack_init(stack_t * s, int size);
int stack_resize(stack_t * s, int size);
int stack_free(stack_t * s);
int stack_empty(stack_t * s);
int stack_push(stack_t * s, item_t item);
int stack_pop(stack_t * s, item_t *item);
void stack_info(stack_t * s);
#include "stack.h"
int stack_init(stack_t * s, int size) else
}int stack_resize(stack_t * s, int size)
return
1; } else
}int stack_free(stack_t * s)
int stack_empty(stack_t * s)
if (s->top == 0)
return
1; else
return0;}
int stack_push(stack_t * s, item_t item)
if (s->top < s->size) else
}int stack_pop(stack_t * s, item_t * item)
if (!stack_empty(s)) else
}void stack_info(stack_t * s)
printf("stack top:%d\n", s->top);
printf("stack size:%d\n", s->size);
printf("stack element:\n");
for (int i = s->top - 1; i >= 0; i--)
printf("\n-------------------------------\n");
}
C語言 實現棧(stack)
1 什麼是棧 棧 stack 又名堆疊,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算,這一端被稱為棧頂,把另一端稱為棧底。向乙個棧插入新元素稱作壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素 從乙個棧刪除元素稱作出棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧...
C語言實現棧
下面程式分別實現了棧的順序儲存結構和棧的鏈式儲存結構的壓棧和彈棧操作,均在dev c 下執行通過。棧的順序儲存結構 include include include include include define ok 1 define error 0 define maxsize 10 typedef...
C語言實現棧
一 實現 vim stack c.c include stdio.h include stdlib.h 棧元素結構體 用來描述每個棧元素 struct list 棧結構體 棧頂元素指標,棧大小資訊 struct stack 棧初始化 struct stack stackinit void 入棧函式 ...