Re: [問題] stack 跟 union的問題

看板Programming作者時間18年前 (2006/06/20 04:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《ckai1983 ( )》之銘言: > struct EOP { > int left, right, current, top; > }; > union stack_mem { > int data; > struct EOP; > }; 先假設你用的是純 C。 union 不要放在最外層, 習慣上要模擬 polymorphism 會把 union 擺在一個 struct 內, 像是: enum data_type { INT_TYPE, EOP_TYPE }; struct stack_mem { union { int ival; struct EOP eopval; } data; enum data_type type; }; type 的部分用來描述 data 裡面是用 ival 還是 eopval。 > struct stackNode { > union stack_mem sm; > struct stackNode *nextPtr; > }; > void push(StackNodePtr *, 這裡不知道怎麼做); 這邊就可以直接這樣寫: void push(StackNodePtr *ptr, struct stack_mem *info) { ... switch(info->type) { case INT_TYPE: ... break; case EOP_TYPE: ... break; } } -- Name: Tseng, Ling-hua E-mail Address: uranus@it.muds.net School: National Chung Cheng University Department: Computer Science and Information Engineering Researching: Porting GCC and Implementing VLIW instruction scheduler in GCC Homepage: https://it.muds.net/~uranus -- ╔═══╗ ┼────────────────────────╮ 狂狷 Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮ 年少 ┼╮ < IP:140.119.164.16 > ╰─╮ ╚╦═╦╝ From:218-171-137-243.dynamic.hinet.net ─╨─╨─ KGBBS 遨翔"BBS"的狂狷不馴;屬於年少的輕狂色彩
文章代碼(AID): #14bmd200 (Programming)
文章代碼(AID): #14bmd200 (Programming)