私はその後、私はCOUT、先頭のアドレスが完全に変更されたときに、見つけリストを生成し、なぜCoutはリストアドレスを変更するのですか?
#include<iostream>
#include<vector>
using namespace std;
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
struct ListNode{
int val;
ListNode *next;
ListNode(int x) :val(x), next(NULL){
}
};
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
}
};
ListNode* geneate_list(vector<int> data){
ListNode *p1, *p2;
if (data.size() <= 0){
p1 = (ListNode*)malloc(sizeof(ListNode));
return p1;
}
/*ListNode *p1, *p2;*/
ListNode head(data[0]);
p2 = &head;
for (int i = 1; i < data.size(); i++){
p1 = (ListNode*)malloc(sizeof(ListNode));
p1->val = data[i];
p1->next = NULL;
p2->next = p1;
p2 = p1;
}
return &head;
}
int main(){
vector<int> data = {1,2,3,4,5,6};
ListNode* head = geneate_list(data);
ListNode * g = head;
while (head!=NULL){
cout << head->val;
head = head->next;
}
return 0;
}
でのvalを印刷したいです。
だから、後
前 、誰もがこれを説明することができますTHX
あなたの 'geneate_list'は、関数のローカル変数(関数の返り値の後に寿命が終わる)のアドレスを返すことによって*未定義の動作*を呼び出します – UnholySheep
多かれ少なかれ無関係ですが、なぜC++プログラムで' malloc'を使用しますか? –