C++实现链表头插头删尾插尾删
#include
struct ListNode { int val; ListNode* next; ListNode(int x) : val(x), next(nullptr) {} };
void insertHead(ListNode*& head, int val) { ListNode* newNode = new ListNode(val); newNode->next = head; head = newNode; }
void deleteHead(ListNode*& head) { if (head == nullptr) { return; } ListNode* temp = head; head = head->next; delete temp; }
void insertTail(ListNode*& head, int val) { ListNode* newNode = new ListNode(val); if (head == nullptr) { head = newNode; return; } ListNode* cur = head; while (cur->next != nullptr) { cur = cur->next; } cur->next = newNode; }
void deleteTail(ListNode*& head) { if (head == nullptr) { return; } if (head->next == nullptr) { delete head; head = nullptr; return; } ListNode* cur = head; while (cur->next->next != nullptr) { cur = cur->next; } delete cur->next; cur->next = nullptr; }
void printList(ListNode* head) { ListNode* cur = head; while (cur != nullptr) { std::cout << cur->val << " "; cur = cur->next; } std::cout << std::endl; }
int main() { ListNode* head = nullptr; insertHead(head, 3); insertHead(head, 2); insertHead(head, 1); printList(head); // Output: 1 2 3
deleteHead(head);
printList(head); // Output: 2 3
insertTail(head, 4);
insertTail(head, 5);
printList(head); // Output: 2 3 4 5
deleteTail(head);
printList(head); // Output: 2 3 4
return 0;
原文地址: https://www.cveoy.top/t/topic/hK9p 著作权归作者所有。请勿转载和采集!