题解 | #牛牛的双链表求和#
牛牛的双链表求和
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
}
查看7道真题和解析