01/10/2018, 17:29

Giúp em danh sách liên kết đơn với ạ

đề là Cho cấu trúc một nút trong cấu trúc danh sách liên kết như bên dưới:

struct Node
    int value;
    Node *nextNode;
};

Bạn hãy viết các hàm sau trong cấu trúc danh sách liên kết:

Node* addNode(Node* head, int index, int value): Trả về một danh sách liên kết sau khi đã thêm vào danh sách liên kết một phần tử có giá trị bằng value ở vị trí thứ index.
Node* deleteNode(Node* head, int index): Trả về một danh sách liên kết sau khi đã xóa đi phần thử thứ index trong danh sách liên kết.

code của em :

Node* addNode(Node* head, int index, int value){
Node *newNode = new Node; // tao node moi
newNode -> value = value; // gan value cho node moi
newNode -> nextNode = NULL;
if (head == NULL) { // nếu danh sách rỗng thì trả về node đã tạo
    return newNode;
} else {
    Node *p = head; // tạo con trỏ để duyệt danh sách
    for (int i=0; i<index-1; i++) {
        p = p-> nextNode;
    }
    newNode -> nextNode = p -> nextNode; 
    p -> nextNode = newNode;
    return head;
}
}

Node* deleteNode(Node* head, int index){
Node *p = head;
Node *old_node = p; // 
if (head == NULL) {
    return NULL; // nếu danh sách rỗng trả về NULL;
} else {
    for (int i=0; i<index-1; i++) {
        old_node = p; 
        p = p-> nextNode; 
    }
    old_node -> nextNode = p ->nextNode;
}
free(p);
return head;
}

em đau não cái danh sách liên kết này quá ạ. làm mấy ngày hôm nay vẫn không xong. mọi người ai giúp em sửa code trên kia với ạ. Em cảm ơn ạ !

Nguyễn Nam viết 19:33 ngày 01/10/2018

for (int i=0; i<index-1; i++) { p = p-> nextNode; }

danh sách liên kết không có index, nên điều kiện phải là p != NULL && index != -1

for (Node* p = head; p!=NULL && index != -1; p=p->nextNode, index--);

Bài liên quan
0