Linked List in C Programming


Linked List in Data Structure example in C programming :




#include <stdio.h>
#include <stdlib.h>

struct NODE {

  int number;
  struct NODE *next;

};

int search_value(struct NODE *llist, int num);
void append_node(struct NODE *llist, int num);
void display_list(struct NODE *llist);
void delete_node(struct NODE *llist, int num);

int main(void) {

  int num = 0;
  int input = 1;
  int retval = 0;
  struct NODE *llist;

  llist = (struct NODE *) malloc(sizeof(struct NODE));
  llist->number = 0;
  llist->next = NULL;

  while (input != 0) {

    printf("\n-- Menu Selection --\n");
    printf("0) Quit\n");
    printf("1) Insert\n");
    printf("2) Delete\n");
    printf("3) Search\n");
    printf("4) Display\n");
    scanf("%d", &input);

    switch (input) {

    case 0:
    default:
      printf("Goodbye ...\n");
      input = 0;
      break;

    case 1:
      printf("Your choice: `Insertion'\n");
      printf("Enter the value which should be inserted: ");
      scanf("%d", &num);
      append_node(llist, num);
      break;

    case 2:
      printf("Your choice: `Deletion'\n");
      printf("Enter the value which should be deleted: ");
      scanf("%d", &num);
      delete_node(llist, num);
      break;

    case 3:
      printf("Your choice: `Search'\n");
      printf("Enter the value you want to find: ");
      scanf("%d", &num);
      if ((retval = search_value(llist, num)) == -1)
        printf("Value `%d' not found\n", num);
      else
        printf("Value `%d' located at position `%d'\n", num, retval);
      break;

    case 4:
      printf("You choice: `Display'\n");
      display_list(llist);
      break;

    } /* switch */
  } /* while */

  free(llist);
  return (0);
}

void display_list(struct NODE *llist) {
  while (llist->next != NULL) {
    printf("%d ", llist->number);
    llist = llist->next;
  }

  printf("%d", llist->number);
}

void append_node(struct NODE *llist, int num) {
  while (llist->next != NULL)
    llist = llist->next;

  llist->next = (struct NODE *) malloc(sizeof(struct NODE));
  llist->next->number = num;
  llist->next->next = NULL;
}

void delete_node(struct NODE *llist, int num) {
  struct NODE *temp;
  temp = (struct NODE *) malloc(sizeof(struct NODE));

  if (llist->number == num) {
    /* remove the node */
    temp = llist->next;
    free(llist);
    llist = temp;
  } else {
    while (llist->next->number != num)
      llist = llist->next;

    temp = llist->next->next;
    free(llist->next);
    llist->next = temp;
  }
}

int search_value(struct NODE *llist, int num) {
  int retval = -1;
  int i = 1;

  while (llist->next != NULL) {
    if (llist->next->number == num)
      return i;
    else
      i++;

    llist = llist->next;
  }

  return retval;
}


OUTPUT
-- Menu Selection --
0) Quit
1) Insert
2) Delete
3) Search
4) Display
4
You choice: `Display'
0
-- Menu Selection --
0) Quit
1) Insert
2) Delete
3) Search
4) Display
1
Your choice: `Insertion'
Enter the value which should be inserted: 34
-- Menu Selection --
0) Quit
1) Insert
2) Delete
3) Search
4) Display
4
You choice: `Display'
0 34
-- Menu Selection --
0) Quit
1) Insert
2) Delete
3) Search
4) Display
0
Goodbye ...

Post a Comment

0 Comments