1.删除给定位置的国彩网
2.递归删除整个单个链接列表。
1.删除给定位置的国彩网
如果要删除头国彩网,则删除头国彩网,然后将新头指向LL中的下一个元素。
如果要删除中间的元素:
- 然后将临时指针指向要删除的国彩网的上一个国彩网。
- 用下一个指针指向要删除的国彩网的下一个国彩网。
- 删除国彩网。
- 分配温度>在下一个国彩网旁边。
2.递归删除整个单个链接列表。
1.如果头国彩网为空,则将其返回。
2.否则将头移到下一个国彩网并递归调用该函数。
C ++解决方案
#include<iostream> #include<vector> #include<string> using namespace std; struct Node { int data; Node *next; Node(int x) { data = x; next = NULL; } }; void print_list(Node *head) { Node *start = head; while(start) { cout<<start->data<<" -> "; start = start->next; } cout<<"\n"; } void delete_given_node(Node **head, int node_pos) { if (*head == NULL) return; Node *temp = *head; // If head needs to be removed if (node_pos == 0) { *head = temp->next; // Change head free(temp); // free old head return; } // Find previous node of the node to be deleted for (int i=0; temp!=NULL && i<node_pos-1; i++) temp = temp->next; // Node temp->next is the node to be deleted // Store pointer to the next of node to be deleted Node *next = temp->next->next; free(temp->next); temp->next = next; } void delete_full_list(Node *head) { if(head == NULL) return; delete_full_list(head ->next); free(head); } int main() { Node *head = new Node(2); head -> next = new Node(1); head -> next -> next = new Node(4); head -> next -> next -> next = new Node(3); head -> next -> next -> next -> next = new Node(6); head -> next -> next -> next -> next -> next = new Node(5); cout<<"The original list = "<<endl; print_list(head); int node_no = 3; delete_given_node(&head, node_no); cout<<"Thelist after deleting "<< node_no <<" node is = "<<endl; print_list(head); delete_full_list(head); return 0; }
该网站上可用的教程列表:
C编程20+章 | C ++编程80+章 |
100多个编码问题 | 数据结构和算法85+章 |
系统设计20+章 | Shell脚本编写12章 |
4g LTE 60+章节 | 最常见的编码问题 |
5G NR 50+章 | Linux系统编程20+章 |