廣義表的建立

2021-07-11 09:19:37 字數 1702 閱讀 2849

#include #include #include #define error -1

#define over_flow 0

#define ok 1

#define max_str_len 100

char hstr[max_str_len] = ;

char istr[max_str_len] = ;

typedef int status;

using namespace std;

typedef int atomtype;

typedef enum elemtag;

typedef struct glnode

prt;

};}*glist;

/*建立廣義表的思想:

廣義表結點分為列表結點和原子結點,當l為單個字元的時候,為原子結點。各個表中結點用逗號分隔

建立廣義表可以用遞迴思想實現,將乙個表中的表頭和表尾分別提取出來,分別建立表頭和表尾的廣義表,

建立過程中注意將遞迴得出的廣義表進行連線*/

void substring(char *sub, char *p,int start,int end)

*sub = '\0';

}void splitheadstr(char *&inputstr,char *&headstr)while(i < n &&(inputstr[i] != ',' || k != 0));

//該while迴圈的作用就是找出該錶第乙個表頭逗號出的位置,如果沒有逗號如: ((a,b))則會使i = n

//注意該錶已經脫去最外層的括號了

if(i < n)else

}status createglist(glist &glist, char *str)

else;

strcpy(tstr,headstr);

createglist(pointer->prt.hp,tstr); //遞迴建立表頭

if(str != null && strlen(str) != 0) //end if

}while(str != null && strlen(str) != 0); //直到表尾為空null則退出

pointer->prt.tp = null; //最後將表尾賦值為null

} //end else

} return ok;

} void outputatomnode(const glist mlist)while(pointer != null);

}int main()

status createglist(glist &glist, char *str)

else;

strcpy(tstr,headstr);

createglist(pointer->prt.hp,tstr); //遞迴建立表頭

tailnode = pointer;

if(str != null && strlen(str) != 0) //end if

}while(str != null && strlen(str) != 0); //直到表尾為空null則退出

pointer->prt.tp = null; //最後將表尾賦值為null

} //end else

} return ok;

}

廣義表操作 建立廣義表,判斷廣義表是否相等

建立廣義表 演算法思路 從字串行中分離出左部,右部,依次為左部和右部建立儲存 char s 61 設字串行長度不超過60 eg a,b c d,e,f g a i b int sever int a,int b i while k 0 s i i b return i eg a,b c d,e,f ...

廣義表的建立與列印

廣義表的建立與列印 本文取自 資料結構與演算法 c語言版 第三版 出版社是清華大學出版社。本博文作為學習資料整理。源 是vc 6.0上可執行程式,我挪到了vs2010中執行。在vs2010中新建c win32 控制台應用程式專案,建立結果截圖 1.廣義表的建立 廣義表的儲存結構示意圖 示例 c x,...

廣義表的建立,遍歷,求深度

include typedef char atomtype typedef enum elemtag atom 0,表示原子 list 1,表示子表 typedef struct glnode htp 表結點的指標域htp,包括 表頭指標域hp和表尾指標域tp atom htp atom htp 是...