回顧單鏈表,堆疊,佇列,雙鏈表資料結構

2021-10-24 20:28:11 字數 1700 閱讀 7171

這幾個資料結構還是比較通俗易懂的,其中堆疊和佇列可以用陣列封裝實現,也可以用雙端鍊錶實現,等等不多複述。個人感覺資料結構真正複雜的是樹型結構,多叉樹,二叉樹,平衡二叉樹,b+樹,b-樹,紅黑樹,他們關係和區別,目前也說不清楚。這一塊是我感覺很薄弱的地方。

簡單寫了個單鏈表,其他的懶得寫了,下篇開始搞搞樹型結構

p2.h

#pragma once

#include using namespace std;

template class p2

; t getbyindex(int i);

private:

node* m_head;

int m_size;

};

p2.cpp

#include "p2.h"

#include using namespace std;

template p2::p2()

template p2::~p2()

template void p2::insert(t v)

node *p = m_head;

for (int i = 0; i < m_size-1; i++)

node * n = new node(v);

p->m_next = n;

m_size++;

}template void p2::remove(t v)

node*p = m_head;

node *pre = null;

while (p != null)

else

delete(p);

m_size--;

if (m_size < 0)

break;

} else

}}template void p2::deletelist()

m_head = null;

m_size = 0;

}template bool p2::isnull()

return false;

}template void p2::reverselist()

node * p = m_head;

node* ppre = m_head;

node* tail = null;

while (p->m_next != null)

tail = p;

while (ppre != m_head) }

ppre->m_next->m_next = ppre;

ppre->m_next = null;

m_head = tail;

printflist();

}template void p2::createlist(t v)

}template void p2::printflist()

cout <<"表長:"template p2::node::node(t value) : m_value(value), m_next(null)

template p2::node::~node()

node*p = m_head;

int index = 0;

while (index < i)

return p->m_value;

}int main(int argc, char * ar**)

單鏈表與雙鏈表佇列

一,鍊錶分類 單鏈表與雙向鍊錶 三,定義類 1 node類 傳值與重寫get,set方法 2 linknodelist類 將對資料的增刪差改的基本操作方法或屬性 3 main 主函式類,進行資料的呼叫 四,單鏈表的示例 public class linklistnode else 設定新節點為最後乙...

單鏈表 雙鏈表

實現乙個單鏈表,鍊錶初始為空,支援三種操作 1 向煉表頭插入乙個數 2 刪除第k個插入的數後面的數 3 在第k個插入的數後插入乙個數 現在要對該鍊錶進行m次操作,進行完所有操作後,從頭到尾輸出整個鍊錶。注意 題目中第k個插入的數並不是指當前鍊錶的第k個數。例如操作過程中一共插入了n個數,則按照插入的...

單鏈表和雙鏈表

單鏈表 單鏈表只有乙個指向下一結點的指標,也就是只能next 雙鏈表 雙鏈表除了有乙個指向下一結點的指標外,還有乙個指向前一結點的指標,可以通過prev 快速找到前一結點,顧名思義,單鏈表只能單向讀取 為什麼市場上單鏈表的使用多餘雙鏈表呢?從儲存結構來看,每個雙鏈表的節點要比單鏈表的節點多乙個指標,...