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; } ```