最近在學資料結構,所以發的大多數都是關於資料結構的題
括號匹配原來用動態規劃做的一道題,現在老師要用棧來實現,用就用吧,還不讓用函式,只能用鏈棧,不開森
很簡單的思路,如果是』(』 『』 『]』,就看棧頂元素是否匹配,匹配就往下操作,如果表示式完了,棧不為空,不匹配;如果棧空了,表示匹配
下面是**的實現
#include #include #include //用雙結構體儲存資料
typedef struct node
node,*pnode;
typedef struct stack
stack,*pstack;
//雖然用不了這麼多函式,還是順便實現了
void init(pstack);//初始化函式
void push(pstack s,int val);//入棧操作
void prints(pstack s);//列印棧
int pop(pstack s,int *p);//出棧操作
int empty(pstack s);//判空
void clear(pstack s);//清空
int getlength(pstack s);//取得棧的長度
int main()
的括號表示式:\n");
gets(ch);
while(*p)
': case ']':
case ')':
pop(&s,&e); //右括號出棧
if((e=='')||(e=='['&&*p==']')||(e=='('&&*p==')'))
p++;
else
break;
default: //其他字元就後移
p++;
} }if(empty(&s))
printf("括號匹配成功");
else
printf("缺少右括號");
return 0;
}void init(pstack s)
else }
int getlength(pstack s)
return count;
}void push(pstack s,int val)
void prints(pstack s)
while(p->next!=null)
printf("\n");
}int empty(pstack s)
int pop(pstack s,int *val)
else }
void clear(pstack s)
else
s->top = s->base;
}}
下面是**的實現結果
資料結構 棧實現括號匹配
真正學習之後,才發現那些所謂的大嬸不過是多用功了些。不知道以前為什麼不親自動手做做,原來這麼簡單。include include include include 棧的鏈式儲存 typedef struct data typedef struct stack 初始化空棧 void initstack ...
資料結構(二) 棧及實現 括號匹配
一 棧的概念與特點 一種特殊的線性表,它的插入和刪除運算均在同一端進行。這一端被稱為棧頂,另一端為棧底,插入稱為進棧,刪除稱為出棧。有後進先出的性質。棧頂top相當於順序表中的size,即元素個數。關於順序表可以參考資料結構 一 順序表及實現 注 沒有a n 這個元素。n是元素的數量 二 棧的操作及...
鏈棧實現括號匹配演算法
封裝好棧的基本操作 初始化,出棧,入棧,判斷棧空。用字元陣列儲存使用者輸入的括號系列,遍歷陣列,如果是左括號就入棧,否則就彈出棧頂元素,將彈出的元素與該括號進行判斷,若匹配則掃瞄下乙個括號,如果匹配失敗,演算法結束,提示失敗。掃瞄完所有字元後,如果棧非空,說明匹配失敗。typedef struct ...