鍊錶 自己動手寫了一下C 的

2021-10-14 11:31:25 字數 3258 閱讀 4147

鍊錶是一種資料結構,是一種功能極其強大的陣列。鍊錶可以很輕鬆的進行增添,刪除,插入節點。

目錄鍊錶

單向鍊錶

1.建立鍊錶

1.1建立節點

1.2初始化

2.鍊錶長度

3.鍊錶列印

4.查詢節點

5.刪除節點

6.增加節點

7.修改節點

完整**

初學者一般先從單向鍊錶開始,單向鍊錶的操作一般包括:建立,修改,插入,輸出,排序,反序,清空,求長度。

利用結構體來定義節點,通過指標來實現鍊錶

利用結構體進行建立鍊錶的節點

struct nodelist

;

下面再進行鍊錶的節點定義時,可以直接用nodelist *node來進行定義

建立n個節點的單向鍊錶

nodelist *createlist(int &n)

end.next=null; //給最後乙個節點的下乙個節點置空

return head; //返回頭部指標

}

返回鍊錶的長度,即length或者size

int length(listnode *head) //返回鍊錶的長度

return len;

}

通過迴圈來列印鍊錶的節點

void printlist(listnode *head) //列印鍊錶  }

通過遍歷查詢是否存在(返回節點的第一次出現的位置)

int findnode(listnode *head, const int &n) //查詢鍊錶中是否存在n,存在返回第一次位置,不存在返回-1

bool deletenode(listnode *head, const int n) //刪除鍊錶的第n個節點

temp = head->next;

head->next = head->next->next;

delete (temp);

return true;

}

通過修改指標的指向來在中間新增節點

bool addnode(listnode *head, const int pos, const int value) //新增乙個節點,在pos這個位置新增乙個數值為value的節點

listnode *temp = new listnode;

temp->val = value;

temp->next = head->next;

head->next = temp;

return true;

}

先查找到節點,在修改節點的值

bool changenode(listnode *head, const int pos, const int value) //修改節點 修改位置pos上的值為value

head->val = value;

return true;

}

/**

* @分函式編寫單鏈表

* *

* @1.鍊錶建立 √

* @2.鍊錶長度 √

* @3.鍊錶列印 √

* @4.查詢節點 √ 返回位置

* @5.刪除節點 √

* @6.增加節點 √

* @7.修改節點 √

* *

* @progra:zbooo

**/#include using namespace std;

struct listnode

;listnode *creatnode(int &n) //建立n個節點的鍊錶

end->next = nullptr;

return head;

}void printlist(listnode *head) //列印鍊錶

}int length(listnode *head) //返回鍊錶的長度

return len;

}int findnode(listnode *head, const int &n) //查詢鍊錶中是否存在n,存在返回位置,不存在返回-1

return -1;

}bool deletenode(listnode *head, const int &n) //刪除鍊錶的第n個節點

temp = head->next;

head->next = head->next->next;

delete (temp);

return true;

}bool addnode(listnode *head, const int pos, const int &value) //新增乙個節點,在pos這個位置新增乙個數值為value的節點

listnode *temp = new listnode;

temp->val = value;

temp->next = head->next;

head->next = temp;

return true;

}bool changenode(listnode *head, const int pos, const int &value) //修改節點 修改位置pos上的值為value

head->val = value;

return true;

}int main()

鍊錶 動手封裝自己的鍊錶

package datastructure.chapter4 author zjtmeng date 2020 1 1 22 24 version 1.0 public class linkedlist public node e e public node override public stri...

自己重寫了一下快速排序的演算法

今天上網看快速排序,發現這麼乙個經典的演算法網上貼出的 要不有bug,要不就是運算的步驟還是冗餘了,所以自己重新寫了個,看了下結果應該是減少大部分不需要的步驟。希望各位路過的道友幫忙驗證下有沒有bug 先貼下運算結果 startk 開始鍵值 endk結束鍵值 dg 遞迴深度 函式 public fu...

自己動手寫資料結構 Queue類模板的鍊錶實現

include mystack.h 包含stack模板類標頭檔案 template class myqueue myqueue const myqueue q myqueue operator const myqueue q bool operator const myqueue q bool op...