這幾個資料結構還是比較通俗易懂的,其中堆疊和佇列可以用陣列封裝實現,也可以用雙端鍊錶實現,等等不多複述。個人感覺資料結構真正複雜的是樹型結構,多叉樹,二叉樹,平衡二叉樹,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 快速找到前一結點,顧名思義,單鏈表只能單向讀取 為什麼市場上單鏈表的使用多餘雙鏈表呢?從儲存結構來看,每個雙鏈表的節點要比單鏈表的節點多乙個指標,...