LinkedList

it was a short practice for exam not hard at all
mail@pastecode.io avatar
unknown
c_cpp
3 years ago
2.6 kB
4
Indexable
Never
#include <stdio.h>
#include <stdlib.h>

typedef struct node {
    struct node* next;
    int data;
}node;

typedef struct linkedList{
    node* head;
    node* tail;
} linkedList;

typedef struct graph
{
    linkedList* bonds[3];
} graph;
node* newNode(int val)
{
    node* newNode = malloc(sizeof(node*));
    newNode->data = val;
    newNode->next = NULL;
    return newNode;
}

linkedList* insertAtHead(linkedList* myList, int val)
{
    node* temp = newNode(val);

    if(myList->tail == NULL)
    {
        myList->tail = temp;

    }

    temp->next = myList->head;
    myList->head = temp;
    return myList;    
}
linkedList* insertAtTail(linkedList* myList, int val)
{

    node* temp = newNode(val);


    if(myList->tail == NULL)
    {
        insertAtHead(myList, val);
        return myList;
    }

    (myList->tail)->next = temp;
    myList->tail = temp;
   
    return myList;
}

linkedList* deleteAtTail(linkedList* myList)
{
    if(myList->head == NULL)
    {
        return myList;
    }
    node* pivot = myList->head;

    while(pivot->next != myList->tail)
    {
        pivot = pivot->next;
    }

    pivot->next = NULL;
    printf("\n___Tail Deleted: (%d)___", (myList->tail)->data);
    myList->tail = pivot;
    return myList;

}

linkedList* deleteAtHead(linkedList* myList)
{
    
    if(myList->head == NULL)
    {
        return myList;
    }

    printf("\n___Head deleted: (%d)___\n", (myList->head)->data);

    myList->head = (myList->head)->next;
    return myList;
}

void printList(linkedList* myList)
{
    node* pivot = myList->head;
    int counter = 0;

    while(pivot != NULL)
    {
        printf("\nList[%d] = (%d)\n", counter, pivot->data);
        pivot = pivot->next;
        counter++;
    }

}

int main()
{
    linkedList* bond_1 = malloc(sizeof(linkedList*));
    linkedList* bond_2 = malloc(sizeof(linkedList*));
    linkedList* bond_3 = malloc(sizeof(linkedList*));

    for(int i = 0, j = 4, k = 10; i < 4; i++, j--, k--)
    {
        bond_1 = insertAtHead(bond_1, i);
        bond_2 = insertAtHead(bond_2, j);
        bond_3 = insertAtHead(bond_3, k);
    }

    graph* myGraph = malloc(sizeof(graph*));

    myGraph->bonds[0] = bond_1;
    myGraph->bonds[1] = bond_2;
    myGraph->bonds[2] = bond_3;

    printf("\n-------------1------------\n");
    printList(myGraph->bonds[0]);
    printf("\n-------------2------------\n");
    printList(myGraph->bonds[1]);
    printf("\n-------------3------------\n");
    printList(myGraph->bonds[2]);
    return 0;
}