單鏈表
#include
using namespace std;
typedef int datatype;
struct slistnode //在c++中結構體也就是乙個類
};typedef slistnode node;
class slist
slist(const slist& s)
:_head(null)
,_tail(null)
}slist& operator=(const slist& s)
}/*node* buynode(datatype x)
*/~slist()
_head = _tail =
null;
}void pushback(datatype x)
else
}void popback()
cur->_next =
null;
free(cur->_next);
}void pushfront(datatype x)
void popfront()
void preinsert(node* pos, datatype x)// 插入乙個節點在pos的前面
cur->_next=
new node(x);
cur->_next->_next = pos;
}// 插入乙個節點在pos的後面
void insert(node* pos, datatype x)
void erase(node* pos)
void print()
cout << endl;
}node* findpos(datatype x)
cur = cur->_next;
}return
null;
}private:
node* _head;
node* _tail;
};void testslist()
雙鏈表
#pragma once
#include
#include
using namespace std;
typedef int datatype;
struct listnode
};typedef listnode node;
class list
list(const list
& l)
}list
& operator=(const list
& l)
}~list()
_head = _tail =
null;
}void pushback(datatype x)//尾插
else
}void popback()//尾刪
void pushfront(datatype x)//頭插
void popfront()//頭刪
// 在pos的前面插入乙個
void insert(node* pos, datatype x)
else
}void erase(node* pos)
else
if (prev ==
null)
else
if (next==
null)
else
}node* find(datatype x)
cur = cur->_next;
}cout <<
"no find"
<< endl;
return
0; }
void reverse()
swap(_head, _tail);
}void print()
cout << endl;
}private:
node* _head;
node* _tail;
};void testlist()
golang實現單 雙鏈表
go實現乙個單鏈表 儲存內容為int 該鍊錶提供以下方法 1 建立鍊錶 2 在鍊錶頭部插入乙個節點 3 返回鍊錶元素個數 4 列印鍊錶所有的元素 type node struct type list struct func newlist list func this list add data i...
java實現單鏈表 雙鏈表 環鏈表
鍊錶是程式裡重要的資料結構,在程式世界運用很廣泛,眾所周知的當屬於jdk裡的linklist了。鍊錶的優點,是相對於陣列來說,擴容是非常快的,如果是陣列擴容,陣列是新申請乙個更大空間的陣列,然後把老陣列內的資料複製到新陣列 而鍊錶就不必申請新鍊錶,直接再分配乙個元素的儲存空間即可。鍊錶的缺點,相對於...
單鏈表 雙鏈表
實現乙個單鏈表,鍊錶初始為空,支援三種操作 1 向煉表頭插入乙個數 2 刪除第k個插入的數後面的數 3 在第k個插入的數後插入乙個數 現在要對該鍊錶進行m次操作,進行完所有操作後,從頭到尾輸出整個鍊錶。注意 題目中第k個插入的數並不是指當前鍊錶的第k個數。例如操作過程中一共插入了n個數,則按照插入的...