資源簡介
問題描述
表達式中可能出現花括號{}、方括號[]、園括號(),從鍵盤輸入一個表達式,檢查左右括號配對情況,并輸出結果。
例子:{[(…)(…)]…(…)}配對
而{[(…)(…)]…[(]…)}不配對
二、實驗目的
掌握棧的存儲與操作。
三、實驗內容及要求
1、構造棧的數據結構。
2、實現棧的創建、查找、遍歷、輸出、入棧、出棧等操作。
代碼片段和文件信息
#include
#include
#include
#define?stack_init_size?10
#define?stack_grow_size?5
#define?elemtype?char
#define?ok?1
#define?error?0
typedef?struct?{?/*建立一個棧的首結點*/
????elemtype?*?base;
????elemtype?*?top;
????int?stacksize;
}?spstack;
int?InitStack(spstack?*s)?{?/*建立空的棧并返回首地址*/
????s->base=((elemtype*)malloc(stack_init_size*sizeof(elemtype)));
????if?(!s->base)?return?error;
????s->top=s->base;
????s->stacksize=stack_init_size;
????return?ok;
}
int?StackEmpty(spstack?*s)?{?/*判斷棧是否為空*/
????if?(s->top==s->base)?return?ok;
????else?????????????????return?error;
}
int?Push(spstack?*selemtype?e)?{?/*往棧頂插入元素即進棧*/
????if?(s->top-s->base>=s->stacksize)?{?/*判斷是否棧滿*/
????????s->base=((elemtype*)realloc(s->base(s->stacksize+stack_grow_size)*sizeof(elemtype)));
????????if?(!s->base)?return?error;
????????s->stacksize+=stack_grow_size;
????????s->top=s->base+s->stacksize;
????}
????*s->top++=e;
????return?ok;
}
int?Pop(spstack?*selemtype?*e)?{?/*讓棧頂元素依次輸出即出棧*/
????if?(StackEmpty(s))?return?error;
????*e=*(--s->top);
????return?ok;
}
int?Comp
- 上一篇:VC++ 視頻播放器 程序及源碼
- 下一篇:C語言graphics圖形庫
評論
共有 條評論