雙向鍊錶 佇列與棧的C C 實現

2021-05-22 23:42:32 字數 646 閱讀 8852

0 基礎

在elf檔案中,對於一些常量,如果是字串常量,其被儲存在唯讀資料段.rodata中,而對整型、浮點型常量等其則被硬編碼到**段.text中。故下段**是行得通的。

int fun()

char * id ="123";

關於結構體的運算子,成員運算子.優先順序大於指標運算子->。

有參巨集的乙個使用經驗:有參巨集是當做函式來使用的,故巨集定義字串最後不要加;號。同時注意有參巨集是作為乙個操作片段來使用,還是作為乙個有返回值的函式來使用。

1 雙向鍊錶的實現

c實現:基本思路是用巨集來定義雙向鍊錶的初始化、插入操作、刪除操作、判斷鍊錶是否為空、在鍊錶中查詢某個節點、遍歷鍊錶等。使用巨集而不使用函式是因為這些操作都非常簡單,往往7~8條機器指令而已,而使用函式可能函式呼叫的開銷要大於具體操作執行所需的開銷。

c++實現:標準c++竟然也支援bool型別了,以前自己竟然不知道!可用乙個模板來實現,因為對鍊錶的操作都非常簡單,故函式實現為內聯函式。

2 佇列的實現

c實現:這裡用巨集實現了引數化多型性。這種引數化多型性在c++中可以用類模板來實現。

使用雙向鍊錶實現佇列和棧

下面是使用雙向鍊錶實現了佇列的進出和棧的push和pop操作 首先是依然是給出雙向鍊錶節點nodetype public class nodetype public nodetype 下面給出了佇列的相關操作 public class doublelinkedlistqueue if rear nu...

雙向佇列的鍊錶實現

定義以下這樣乙個佇列結構 include include define elementtype int define error 1e5 typedef struct node ptrtonode struct node typedef struct dequerecord deque struct...

鍊錶棧與佇列的實現

link queue from squeue import queueerror class node def init self,val,next none self.val val self.next next class lqueue def init self self.rear node ...