鍊錶是一種資料結構,是一種功能極其強大的陣列。鍊錶可以很輕鬆的進行增添,刪除,插入節點。
目錄鍊錶
單向鍊錶
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...