-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是空的。我不知道爲什麼。 –