單鏈表常見功能的實現 以及逆轉等

2021-06-17 18:32:33 字數 1462 閱讀 7445

#include

#define size 40

using namespace std;

/*實現乙個棧,用於後面將鍊錶中的元素先壓棧再彈出棧實現反向列印的功能*/

int stack[size];

int top=0;//棧頂指標

//判空

int is_empty()

//判滿

int is_full()

//壓棧

void push(int data)

//彈棧

int pop()

/*實現乙個帶頭節點與尾節點的單向鍊錶*/

//如果頭節點為空,說明這是每乙個節點,也是最後乙個節點

if(m_head==null)

//如果頭節點不為空,追加節點為尾節點

else*/}

//在index之後插入資料功能的實現

void insert(size_t index,int data)}

//如果找不到則拋異常

throw overbound();}

//刪除指定位置的節點的實現

void erase(size_t index)

//定義乙個臨時節點用於儲存要刪除節點的前乙個節點,以便將其m_next指標指向刪除節點的m_next指向位址。

node *findpre;

for(node *find=m_head;find;find=m_head->m_next)

index--;

}throw overbound();}

//獲得鍊錶的長度

int getlength()

//反向列印,呼叫後面的遞迴函式來實現

void rprint(void)const

//反向列印,陣列來實現

void backward()

for(i=len-1;i>=0;i--)

//呼叫逆轉

void reverse() 

private:

//定義乙個內部節點類

class node

int m_data;//資料

node *m_next; //下乙個節點的指標

};//定義乙個內部異常類

class overbound:public exception

};//反向列印以head為首的子鍊錶,採用遞迴來實現

void rprint(node *head)const

}//鍊錶的逆轉功能實現

void reverse(node *head)

s->m_next = p;

m_tail=head;

m_head=s;}

//鍊錶資料成員

node *m_head;//煉表頭指標

node *m_tail;//鍊錶尾指標

size_t m_length;//鍊錶長度 };

}

迴圈單鏈表的實現以及相關操作

如果有不足之處我會加以改正,都是個人理解難免有錯誤的地方請諒解。由之前的單鏈表 雙鏈表在到迴圈鍊錶三個鍊錶之間有很多重複和相似的地方。大體的邏輯關係是一致的,不同地方在於首位和每個節點之間的關係 單鏈表 每個節點之間依靠指標鏈結 方向為頭 尾 頭節點和尾節點 next均為null雙鏈表 每個節點之間...

單鏈表的建立以及功能的實現

include include include typedef intdatatype typedef struct nodelistnode,linklist listnode p linklist head 注意 定義結點結構時,有幾點需要注意 linklist和listnode 是不同名字的同...

前端分頁功能的實現以及原理

原文 點我 定義乙個分頁方法,可多次呼叫 引數設定 請求資料頁面跳轉方法 建立非數字按鈕和資料內容區 建立數字按鈕 首屏載入 呼叫 function paginationnick opt 幾個必填的容器class,和幾個可以修改的預設資料引數 var pager pager extend pager...