单链表操作全解析:从入门到精通
单链表的基本概念
单链表是一种线性数据结构,由一系列节点组成,每个节点包含数据域和指针域。数据域存储元素值,指针域存储下一个节点的地址。链表的优势在于动态内存分配和高效的插入/删除操作,但随机访问效率较低。
单链表的节点定义
单链表的节点通常通过结构体(C语言)或类(C++)实现。以下是C++的节点定义示例:
struct ListNode {
int val; // 数据域
ListNode *next; // 指针域
ListNode(int x) : val(x), next(nullptr) {}
};
单链表的初始化
初始化链表时需要创建头节点(哨兵节点),简化边界条件处理。以下是初始化示例:
ListNode* initList() {
ListNode *dummy = new ListNode(-1); // 头节点不存储实际数据
return dummy;
}
单链表的插入操作
头插法:将新节点插入链表头部。时间复杂度为 $O(1)$。
void insertAtHead(ListNode* dummy, int val) {
ListNode *newNode = new ListNode(val);
newNode->next = dummy->next;
dummy->next = newNode;
}
尾插法:将新节点插入链表尾部。需遍历链表,时间复杂度为 $O(n)$。
void insertAtTail(ListNode* dummy, int val) {
ListNode *cur = dummy;
while (cur->next != nullptr) {
cur = cur->next;
}
cur->next = new ListNode(val);
}
单链表的删除操作
删除指定值的节点需遍历链表,时间复杂度为 $O(n)$。
void deleteNode(ListNode* dummy, int val) {
ListNode *cur = dummy;
while (cur->next != nullptr && cur->next->val != val) {
cur = cur->next;
}
if (cur->next != nullptr) {
ListNode *tmp = cur->next;
cur->next = cur->next->next;
delete tmp;
}
}
单链表的查找操作
查找是否存在某个值,时间复杂度为 $O(n)$。
bool search(ListNode* dummy, int val) {
ListNode *cur = dummy->next;
while (cur != nullptr) {
if (cur->val == val) return true;
cur = cur->next;
}
return false;
}
单链表的遍历与打印
遍历链表并打印所有节点的值:
void printList(ListNode* dummy) {
ListNode *cur = dummy->next;
while (cur != nullptr) {
cout << cur->val << " ";
cur = cur->next;
}
cout << endl;
}
单链表的内存释放
动态分配的内存需手动释放,避免内存泄漏:
void freeList(ListNode* dummy) {
ListNode *cur = dummy;
while (cur != nullptr) {
ListNode *tmp = cur;
cur = cur->next;
delete tmp;
}
}
单链表的应用场景
- 动态内存管理:适合频繁插入/删除的场景,如实现队列或栈。
- 多项式表示:每个节点存储系数和指数,方便多项式运算。
- 哈希冲突解决:链地址法中,哈希表的每个槽位使用链表存储冲突元素。
常见问题与优化
- 边界条件:处理空链表或头尾节点时需谨慎。
- 虚拟头节点:简化插入/删除操作,避免特殊处理头节点。
- 双指针技巧:快慢指针可用于检测环或查找中间节点。
通过以上实现和优化,单链表可以高效支持动态数据操作,成为算法和工程中的基础工具。
BbS.okacop092.info/PoSt/1120_968815.HtM
BbS.okacop093.info/PoSt/1120_964580.HtM
BbS.okacop094.info/PoSt/1120_267798.HtM
BbS.okacop095.info/PoSt/1120_359904.HtM
BbS.okacop096.info/PoSt/1120_828361.HtM
BbS.okacop097.info/PoSt/1120_105390.HtM
BbS.okacop098.info/PoSt/1120_325215.HtM
BbS.okacop099.info/PoSt/1120_643005.HtM
BbS.okacop114.info/PoSt/1120_783696.HtM
BbS.okacop829.info/PoSt/1120_616699.HtM
BbS.okacop092.info/PoSt/1120_030402.HtM
BbS.okacop093.info/PoSt/1120_239497.HtM
BbS.okacop094.info/PoSt/1120_691074.HtM
BbS.okacop095.info/PoSt/1120_670555.HtM
BbS.okacop096.info/PoSt/1120_059470.HtM
BbS.okacop097.info/PoSt/1120_435861.HtM
BbS.okacop098.info/PoSt/1120_151583.HtM
BbS.okacop099.info/PoSt/1120_093594.HtM
BbS.okacop114.info/PoSt/1120_471163.HtM
BbS.okacop829.info/PoSt/1120_372105.HtM
BbS.okacop092.info/PoSt/1120_935591.HtM
BbS.okacop093.info/PoSt/1120_573401.HtM
BbS.okacop094.info/PoSt/1120_323862.HtM
BbS.okacop095.info/PoSt/1120_644993.HtM
BbS.okacop096.info/PoSt/1120_397069.HtM
BbS.okacop097.info/PoSt/1120_347437.HtM
BbS.okacop098.info/PoSt/1120_696866.HtM
BbS.okacop099.info/PoSt/1120_036218.HtM
BbS.okacop114.info/PoSt/1120_805463.HtM
BbS.okacop829.info/PoSt/1120_230379.HtM
BbS.okacop092.info/PoSt/1120_482406.HtM
BbS.okacop093.info/PoSt/1120_312594.HtM
BbS.okacop094.info/PoSt/1120_658178.HtM
BbS.okacop095.info/PoSt/1120_384678.HtM
BbS.okacop096.info/PoSt/1120_430001.HtM
BbS.okacop097.info/PoSt/1120_062281.HtM
BbS.okacop098.info/PoSt/1120_741410.HtM
BbS.okacop099.info/PoSt/1120_971319.HtM
BbS.okacop114.info/PoSt/1120_199020.HtM
BbS.okacop829.info/PoSt/1120_266734.HtM
BbS.okacop092.info/PoSt/1120_129150.HtM
BbS.okacop093.info/PoSt/1120_760510.HtM
BbS.okacop094.info/PoSt/1120_301861.HtM
BbS.okacop095.info/PoSt/1120_196411.HtM
BbS.okacop096.info/PoSt/1120_557984.HtM
BbS.okacop097.info/PoSt/1120_215184.HtM
BbS.okacop098.info/PoSt/1120_297148.HtM
BbS.okacop099.info/PoSt/1120_581283.HtM
BbS.okacop114.info/PoSt/1120_558922.HtM
BbS.okacop829.info/PoSt/1120_000655.HtM
BbS.okacop092.info/PoSt/1120_396224.HtM
BbS.okacop093.info/PoSt/1120_811821.HtM
BbS.okacop094.info/PoSt/1120_298566.HtM
BbS.okacop095.info/PoSt/1120_842073.HtM
BbS.okacop096.info/PoSt/1120_613720.HtM
BbS.okacop097.info/PoSt/1120_184227.HtM
BbS.okacop098.info/PoSt/1120_126028.HtM
BbS.okacop099.info/PoSt/1120_906767.HtM
BbS.okacop114.info/PoSt/1120_957165.HtM
BbS.okacop829.info/PoSt/1120_936600.HtM
BbS.okacop092.info/PoSt/1120_783233.HtM
BbS.okacop093.info/PoSt/1120_028984.HtM
BbS.okacop094.info/PoSt/1120_303823.HtM
BbS.okacop095.info/PoSt/1120_724570.HtM
BbS.okacop096.info/PoSt/1120_861717.HtM
BbS.okacop097.info/PoSt/1120_052493.HtM
BbS.okacop098.info/PoSt/1120_238739.HtM
BbS.okacop099.info/PoSt/1120_934309.HtM
BbS.okacop114.info/PoSt/1120_540459.HtM
BbS.okacop829.info/PoSt/1120_436350.HtM
BbS.okacop092.info/PoSt/1120_166457.HtM
BbS.okacop093.info/PoSt/1120_777811.HtM
BbS.okacop094.info/PoSt/1120_539800.HtM
BbS.okacop095.info/PoSt/1120_087371.HtM
BbS.okacop096.info/PoSt/1120_324201.HtM
BbS.okacop097.info/PoSt/1120_504628.HtM
BbS.okacop098.info/PoSt/1120_409679.HtM
BbS.okacop099.info/PoSt/1120_809070.HtM
BbS.okacop114.info/PoSt/1120_645163.HtM
BbS.okacop829.info/PoSt/1120_304620.HtM
查看17道真题和解析
