构造
手写一个链表
// 单链表
struct ListNode {
int val; // 节点上存储的元素
ListNode *next; // 指向下一个节点的指针
ListNode(int x) : val(x), next(NULL) {} // 节点的构造函数
};
调用之
ListNode* head = new ListNode(5);
或
C++的默认构造
ListNode* head = new ListNode();
head->val = 5;
基本操作
删除节点
C节点的next指针 指向E节点即可
但是 D节点依然存留在内存里 只不过是没有在这个链表里而已。
所以在C++里最好是再手动释放这个D节点,释放这块内存。
其他语言例如Java、Python,有自己的内存回收机制,不用手动释放。
添加节点
链表的增添和删除都是O(1) 且不会影响到其他节点。
但是 要是删除第五个节点,需要从头节点查找到第四个节点通过next指针进行删除操作,查找的时间复杂度是O(n)。
性能分析