括號匹配思路:
1、遇到左邊的括號 進棧 ,
2、遇到右邊的括號獲取原來棧 中棧頂元素,與剛遇到的值進行匹配,匹配成功則彈棧;
重復上面的兩部分
數據結構的算法如何描述(未查資料寫的):
bool isValid(char * s){
InitStack(&S);
char *p = "String";" s == p"
"怎么描述左括號? = left 輸入的括號 為 n"
while(*p){
if( n = left){
push(&S,left);
}else{
if(getTop() == n.left) "這種模式需不需要判空"
pop(S,left);
else(
return error;
)
}
p = p+1;
}
return OK;
鄧俊輝版 算法描述
算法中 ({ }) [ ]分別等,特例寫入算法中;
行編輯程序
描述:接收用戶從終端輸入的程序或者數據,并存入用戶的數據區,若沒接收一個字符就存入用戶的數據區 的做法顯然不是最恰當的,較好的做法是,設立緩沖區 :接收用戶的一行數據,而后在逐行的存入,
發現錯誤可以及時的更正;刪除前面一個 或者清空一個棧。
void LineEdit(){
InitStack(&S);
ch = getChar();//重終端獲取第一個字符
while(ch!= EOF){
while(ch != EOF &&ch != '\n'){
switch(ch){
case:'#':Pop(&S,&e);
case:'@' x=clearStaeck(&S);
default:Push(&S ,e)
}
ch=getChar();//從終端獲取下一個字符;
}
將棧中的數據轉入 傳送至 調用過程的數據區;
}
ClearStack(S);
if(ch!=EOF){
ch = getchar();//獲取另外一行的第一個字符
}
DestoryStack(S);
}