lundi 29 juin 2015

C: ADD duplicate items(string) in doubly linked list


I am learning C and currently figuring out the implementation of double linked list. As strange as it may sound, I want repetitive items added to my linked list. I am adding newNode to the list in sorted order.

The below function does not add the repetitive nodes. I will be thankful for any assistance

    struct Node
    {
        char name[42];
        struct Node *next;
        struct Node *prev;
    };

    void addSorted(struct Node **head, struct Node *newNode)
    {
        struct Node* current;
        // Special case for the head end
        if ((*head == NULL) || strcmp((*head)->name, newNode->name) >= 0)
        {
            newNode->next = *head;
            *head = newNode;
        }
        else
        {
            // Locate the Node before the point of insertion
            current = *head;
            while (current->next != NULL &&
                    strcmp(current->next->name, newNode->name) <= 0)
            {
                current = current->next;
            }
            newNode->next = current->next;
            current->next = newNode;
        }
    }

    struct Node* GetNewNode(char *name)
    {
        struct Node* newNode = malloc(sizeof (struct Node));

        strcpy(newNode->name, name);
        newNode->prev = NULL;
        newNode->next = NULL;

        return newNode;
    }

    int main(void)
    {
        // Some Irrelevant Code
        if (strncmp(operator, "a", 1) == 0)
        {
            temp = GetNewNode(name);

            addSorted(&head, temp);
        }
     }


Aucun commentaire:

Enregistrer un commentaire