棧的鏈式表示+判斷表示式括號是否配對
阿新 • • 發佈:2018-11-09
2018.10.30金庸前輩去世了。飛雪連天射白鹿 笑書神俠倚碧鴛!
武俠泰斗金庸逝世
享年94歲
金庸
原名查良鏞,1924年3月10日生於浙江省海寧市 ,武俠小說作家、新聞學家、企業家、政治評論家、社會活動家。
金庸夏夢同日去世 夏夢曾是金庸筆下小龍女原型。
鐵桿金庸迷、女作家三毛曾說,“我曾對金庸先生說,你豈只是寫武俠小說呢?你寫的包含了人類最大的,古往今來最不能解決的,使人類可以上天堂也可以下地獄的一個字,也就是‘情’字。”一生痴戀
痴戀夏夢,卻註定無疾而終
說起她,金庸毫不避諱,“西施怎樣美麗誰也沒見過,我想她應該長得像她才名不虛傳。”金庸此話中的她,正是上世紀五六十年代香港長城電影製片公司頭牌女星——夏夢。
金庸為她一生痴迷,並以她為原型創造了筆下眾多的“金庸女子”,人所共知的如小龍女、王語嫣等。而仔細探究,在金庸的許多作品中,女主角們都留有夏夢的影子,恰這種“恨不相逢未嫁時”的苦楚,也在很大程度上影響了金庸,以及他筆下的江湖。
更令人唏噓的是,金庸的“夢中情人”夏夢逝於2016年10月30號。而兩年後的10月30日,金大俠竟同日西去。
不求同生,但求“同死”——也許冥冥之中也印證兩人別樣的深情吧。
https://toutiao.china.com/shsy/gundong4/13000238/20181031/34311323.html
90後好像從去年開始進入了,從鄉愁—余光中先生,HK—Stephen William Hawking,主持人李詠,送別的時代
1listack.cpp即 1++.cpp
#include <stdio.h> #include <malloc.h> typedef char ElemType; typedef struct linknode { ElemType data; //資料域 struct linknode *next; //指標域 } LiStack; //鏈棧型別定義 void InitStack(LiStack *&s) { s=(LiStack *)malloc(sizeof(LiStack)); s->next=NULL; } void DestroyStack(LiStack *&s) { LiStack *pre=s,*p=s->next; while(p!=NULL){ free(pre); pre=p; p=pre->next; } free(pre); } /* void DestroyStack(LiStack *&s) { LiStack *p=s->next; while (p!=NULL) { free(s); s=p; p=p->next; } free(s); //s指向尾結點,釋放其空間 } */ int StackLength(LiStack *s) { int i=0; LiStack *p; p=s->next; while (p!=NULL) { i++; p=p->next; } return(i); } bool StackEmpty(LiStack *s) { return(s->next==NULL); } void Push(LiStack *&s,ElemType e) { LiStack *p; p=(LiStack *)malloc(sizeof(LiStack)); p->data=e; //新建元素e對應的節點*p p->next=s->next; //插入*p節點作為開始節點 s->next=p; } bool Pop(LiStack *&s,ElemType &e) { LiStack *p; if (s->next==NULL) //棧空的情況 return false; p=s->next; //p指向開始節點 e=p->data; s->next=p->next; //刪除*p節點 free(p); //釋放*p節點 return true; } bool GetTop(LiStack *s,ElemType &e) { if (s->next==NULL) //棧空的情況 return false; e=s->next->data; return true; }
2 exam3-5-2.cpp
#include "1++.cpp" #include <string.h> bool Match(char exp[],int n) { int i=0; char e; bool match=true; LiStack *st; InitStack(st); //初始化棧 while (i<n && match) //掃描exp中所有字元 { if (exp[i]=='(') //當前字元為左括號,將其進棧 Push(st,exp[i]); else if (exp[i]==')') //當前字元為右括號 { if (GetTop(st,e)==true) { if (e!='(') //棧頂元素不為'('時表示不匹配 match=false; else Pop(st,e); //將棧頂元素出棧 } else match=false; //無法取棧頂元素時表示不匹配 } i++; //繼續處理其他字元 } if (!StackEmpty(st)) //棧不空時表示不匹配 match=false; DestroyStack(st); //銷燬棧 return match; } int main() { char exp[]="(1+2*(5+3)/2)"; if (Match(exp,strlen(exp))==1) printf("表示式%s括號配對\n",exp); else printf("表示式%s括號不配對\n",exp); return 0; }