题解 | #牛牛的链表添加节点#
牛牛的链表添加节点
https://www.nowcoder.com/practice/e33b79c2e15a41f9b541e73cd256124a
#include <iomanip> #include <iostream> using namespace std; class Node {//创建节点 public: int data; Node* next;//创建指向下一个节点的指针 Node(int val) { data = val; next = nullptr;//初始化指针为空 } }; class Linkedlist { public: //创建头节点初始化为空 Node* head; Linkedlist() { head = nullptr; } //尾插法 void append(int val) { Node* newnode = new Node(val); //如果头节点为空,设置新节点为头节点 if (head == nullptr) { head = newnode; return; } Node* temp = head;//把头节点赋给temp //遍历找到最后节点 while (temp->next != nullptr) { //把后一个的指向赋给temp temp = temp->next; } //把新节点链接到末尾 temp->next = newnode; } //打印链表 void printlist() { Node* temp = head; //遍历链表 while (temp != nullptr) { cout << temp->data << " "; //节点向后走 temp = temp->next; } } //引用m作为插入的位置 void input(int &m){ int n; cin>>n>>m; int *a=new int[n]; for(int i=0;i<n;i++){ cin>>a[i]; //调用尾插函数 append(a[i]); } } //定义函数插入节点 void charu(int &m){ //创建节点遍历链表 Node* temp=head; int i=0; //当temp落在插入节点前一个位置时停下 while(i<m-1&&temp!=nullptr){ temp=temp->next; i++; } if(temp!=nullptr){ //创建新节点并将m的值赋给新节点 Node* newnode=new Node(m); //把本来temp指向的下一个给新结点指向 newnode->next=temp->next; //再把新节点被temp指向 temp->next=newnode; } } }; int main() { int m; Linkedlist l1; l1.input(m); l1.charu(m); l1.printlist(); }