题解 | #牛牛的双链表求和#
牛牛的双链表求和
https://www.nowcoder.com/practice/efb8a1fe3d1f439691e326326f8f8c95
#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; } } //int* &a表示a引用的是一个指向int型的指针使用这个引用可以对a修改 void input(int* &a,int* &b,int &n){ cin>>n; a=new int[n]; b=new int [n]; //输入数组中 for(int i=0;i<n;i++){ cin>>a[i]; } //输入数组中 for(int i=0;i<n;i++){ cin>>b[i]; } } //取数组的地址和数组中元素大小 void puls(int* a,int* b,int n){ for(int i=0;i<n;i++){ b[i]+=a[i]; append(b[i]); } } }; int main() { int *a; int *b; int n; Linkedlist l1; l1.input(a,b,n);//输入数组a和b l1.puls(a, b, n);//元素相加并输入链表 l1.printlist();//打印链表 delete [] a;//动态释放a delete [] b;//动态释放b }