1. 单链表的建立、插入、删除、查找运算思路结构:
定义单链表节点结构体:
struct ListNode {int val;ListNode *next;ListNode(int x) : val(x), next(NULL) {}};
1.1 单链表的建立
ListNode* createList(vector<int>& nums) {ListNode* head = new ListNode(0);ListNode* cur = head;for (int i = 0; i < nums.size(); i++) {ListNode* newNode = new ListNode(nums[i]);cur->next = newNode;cur = newNode;}return head->next;}
1.2 单链表的插入
void insertNode(ListNode* head, int val) {ListNode* newNode = new ListNode(val);newNode->next = head->next;head->next = newNode;}
1.3 单链表的删除
void deleteNode(ListNode* head, int val) {ListNode* cur = head;while (cur->next != NULL) {if (cur->next->val == val) {ListNode* temp = cur->next;cur->next = temp->next;delete temp;break;}cur = cur->next;}}
1.4 单链表的查找
ListNode* searchNode(ListNode* head, int val) {ListNode* cur = head->next;while (cur != NULL) {if (cur->val == val) {return cur;}cur = cur->next;}return NULL;}
2. 循环单链表的建立、插入、删除、查找运算思路结构:
定义循环单链表节点结构体:
struct ListNode {int val;ListNode *next;ListNode(int x) : val(x), next(NULL) {}};
2.1 循环单链表的建立
ListNode* createList(vector<int>& nums) {ListNode* head = new ListNode(0);ListNode* cur = head;for (int i = 0; i < nums.size(); i++) {ListNode* newNode = new ListNode(nums[i]);cur->next = newNode;cur = newNode;}cur->next = head;return head->next;}
2.2 循环单链表的插入
void insertNode(ListNode* head, int val) {ListNode* newNode = new ListNode(val);ListNode* cur = head->next;while (cur->next != head) {cur = cur->next;}newNode->next = head;cur->next = newNode;head = newNode;}
2.3 循环单链表的删除
void deleteNode(ListNode* head, int val) {ListNode* cur = head;while (cur->next != head) {if (cur->next->val == val) {ListNode* temp = cur->next;cur->next = temp->next;delete temp;break;}cur = cur->next;}}
2.4 循环单链表的查找
ListNode* searchNode(ListNode* head, int val) {ListNode* cur = head->next;while (cur != head) {if (cur->val == val) {return cur;}cur = cur->next;}return NULL;}
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/2351.html