cuốn sách gpt4 ai đã làm

Chèn và di chuyển các phần tử sau vector

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 07:52:07 hai mươi bốn 4
mua khóa gpt4 Nike

Tôi đang viết một danh sách liên kết, sử dụng vector để lưu nó (và tôi biết mình không nên sử dụng vector). Tôi đang cố gắng triển khai chức năng chèn một nút vào một vị trí x và di chuyển tất cả các phần tử đến x nhưng vì lý do nào đó nó chỉ lấy vị trí ban đầu các phần tử của x và ghi đè tất cả các phần tử còn lại bằng giá trị này.

Đây là chức năng tôi gặp sự cố:

//Chèn phần tử vào chỉ mục x
void LinkedList::insertAt(int x, int data) {
Nút* tempNode = Nút mới();
Nút* currentNode = vecList[x];
Nút* nextNode = vecList[x + 1];
Nút* trướcNode = vecList[x - 1];

if(x == đếm) {
push_back(tempNode, dữ liệu);
return;
}
khác {
count++;
for (int i = 0; i < getSize(); i++){
vecList[x + 1]->next = vecList[x]->next; // chuyển địa chỉ của 'temp->next' sang 'temp'
vecList[x + 1]->data = vecList[x]->data;
if (vecList[x] == NULL){break;}
}
tempNode->data = dữ liệu;
tempNode->previous = previousNode;
tempNode->next = nextNode;
tempNode->id = x+1;

vecList[x] = tempNode;
vecList[x - 1]->next = tempNode; // Trỏ nút trước vào nút này
}
}//Thêm nút nhưng thay thế nút gốc

Nó đặt giá trị được truyền vào x vị trí, tôi nghĩ vấn đề của tôi là di chuyển phần tử tới x 之后。

Khi tôi gọi Linkedlist.insertAt(2, 50); khi nó đang thực thi:10, 20, 50, 30, 30, nhưng kỳ vọng là:10, 20, 50, 30,40.

nútSự định nghĩa:

nút cấu trúc {
Nút * trước đó;
Nút * tiếp theo;

int id;
dữ liệu int;
};

câu trả lời hay nhất

Vấn đề là vòng lặp của bạn:

for (int i = 0; i < getSize(); i++){
vecList[x + 1]->next = vecList[x]->next; // chuyển địa chỉ của 'temp->next' sang 'temp'
vecList[x + 1]->data = vecList[x]->data;
if (vecList[x] == NULL){break;}
}

Bạn đang đi ngang qua Tôi, nhưng thực sự không có gì được đọc trong vòng lặp Tôi. Vì vậy bạn chỉ cần làm tương tự getSize() Hạng hai. Tôi nghĩ bạn có ý định vecList[i + 1] được giao cho veclist[i]. Hơn nữa, giới hạn dưới của vòng lặp không được 0, nhưng nên x. ở đâu, để rõ ràng hơn, tên của biến có lẽ phải là tư thế hoặc một cái gì đó như thế.

Trong trích dẫn vecList[x + 1] hoặc vecList[x - 1] Hãy cẩn thận khi làm như vậy. nếu như x là 0 hoặc vecList.size() - 1 Điều gì sẽ xảy ra? Bạn đang trỏ đến một đối tượng không xác định.

Về c++ - chèn và di chuyển các phần tử sau vectơ, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/26590697/

hai mươi bốn 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress