Giúp sửa lỗi Double Linked List

VD: Them 3 vao sau tat ca 4:
input: 1 4 66 4 7 9 4 22
output: 1 4 3 66 4 3 7 9 4 3 22
Mình viết được hàm thêm rồi nhưng output bị sai:
1 3 3 3 4 66 4 7 9 4 22
Hàm mình code:


Mình nên sửa ntn ạ? Cám ơn mng

bạn nên giải thích code của bạn trước, cho mọi người hiểu
tự nhiên ai biết pHead là cái gì, kiểu DList là kiểu gì, có prop gì trong đó

3 Likes

Hàm trên: x là giá trị có sẵn trong list, y là giá trị nhập vào để thêm sau tất cả các node có giá trị x.
Mình khai báo thế này:
struct DNode
{
int info; //gia trị node
DNode *pNext, *pPrev; //node sau,node trước
};

struct DList
{
DNode *pHead, *pTail; // node đầu node cuối
};
Các hàm cơ bản của Danh sách liên kết kép mình đã viết và chạy đúng, còn lỗi chỗ hàm addAfterMulti vì nó chỉ chạy và thêm vào sau node->info=x đầu tiên

Trong hàm AddAfterMulti, đến đoạn kiểm tra giá trị của node K bằng x, bạn đang đứng ở node K có giá trị x rồi, tại sao phải đưa vào hàm addAfter để chạy lại từ node Head tốn công vậy?

a -> b -> c -> k (== x) -> d -> e

Giờ bạn chỉ cần add 1 node mới sau K và nhảy tới D là xong mà.

(Less code, less bug)

4 Likes

Mình hiểu rồi ạ, cám ơn bạn nhé!

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?