-2
void fillList(ListNode *&emp,int a[],int n){
ListNode *e=new ListNode(a[0]);
emp=e;
for(int i=1;i<n;++i){
e=e->next;
e=new ListNode(a[i]);
}
}
void showList(ListNode *l){
while(l){
cout<<l->val<<' ';
l=l->next;
}
}
我在这里写了两个函数,一个用数组填充空链接,另一个用来输出链接。但是当我输出链接时,它只是数组中的第一个元素。我做错了什么?该程序列出如下。非常感谢。为什么指向同一链接的两个指针在这里的行为有所不同?
#include<iostream>
using namespace std;
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode *p1=l1, *p2=l2, *n1, *n2;
while(p1&&p2){
p1=p1->next;
p2=p2->next;
}
if(p2){n1=l2;n2=l1;}else{n1=l1;n2=l2;}
bool b=0;
while(l1){
if((l1->val+=l2->val)>=10){l1->val-=10;b=1;}
l1=l1->next;
l2=l2->next;
if(b)if(l1)l1->val++;else l1=new ListNode(1);
}
return n1;
}
};
void fillList(ListNode *&emp,int a[],int n){
ListNode *e=new ListNode(a[0]);
emp=e;
for(int i=1;i<n;++i){
e=e->next;
e=new ListNode(a[i]);
}
}
void showList(ListNode *l){
while(l){
cout<<l->val<<' ';
l=l->next;
}
}
int main(){
Solution sol;
ListNode *l1=0,*l2=0;
int a[]={2,4,3},b[]={5,6,4};
fillList(l1,a,3);
fillList(l2,b,3);
//cout<<l1->val<<endl;
showList(l1);
showList(l2);
showList(sol.addTwoNumbers(l1,l2));
}
当您通过程序加强与调试器,一次一行,你做了什么观察?这段代码中的一个明显错误应该是在你的调试器中可观察到的。 –
我看到我不能cout emp-> next-> val,因为emp-> next是空的。我不知道为什么。 –