Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- struct linked_list
- {
- int number;
- struct linked_list *next;
- };
- typedef struct linked_list node;
- node *head=NULL, *last=NULL;
- void create_linked_list();
- void print_linked_list();
- void insert_at_last(int value);
- void insert_at_first(int value);
- void insert_after(int key, int value);
- void delete_item(int value);
- void search_item(int value);
- int main()
- {
- int key, value;
- printf("Create Linked List\n");
- create_linked_list();
- print_linked_list();
- printf("\nInsert new item at last\n");
- scanf("%d", &value);
- insert_at_last(value);
- print_linked_list();
- printf("\nInsert new item at first\n");
- scanf("%d", &value);
- insert_at_first(value);
- print_linked_list();
- printf("\nEnter a KEY (existing item of List), after that you want to insert a value\n");
- scanf("%d", &key);
- printf("\nInsert new item after %d KEY\n", key);
- scanf("%d", &value);
- insert_after(key, value);
- print_linked_list();
- printf("\nEnter an item to search it from List\n");
- scanf("%d", &value);
- search_item(value);
- printf("\nEnter a value, which you want to delete from list\n");
- scanf("%d", &value);
- delete_item(value);
- print_linked_list();
- return 0;
- }
- void create_linked_list()
- {
- int val;
- while(1)
- {
- printf("Input a number. (Enter -1 to exit)\n");
- scanf("%d", &val);
- if(val==-1)
- break;
- insert_at_last(val);
- }
- }
- void insert_at_last(int value)
- {
- node *temp_node;
- temp_node = (node *) malloc(sizeof(node));
- temp_node->number=value;
- temp_node->next=NULL;
- if(head==NULL)
- {
- head=temp_node;
- last=temp_node;
- }
- else
- {
- last->next=temp_node;
- last=temp_node;
- }
- }
- void insert_at_first(int value)
- {
- node *temp_node = (node *) malloc(sizeof(node));
- temp_node->number=value;
- temp_node->next = head;
- head = temp_node;
- }
- void insert_after(int key, int value)
- {
- node *myNode = head;
- int flag = 0;
- while(myNode!=NULL)
- {
- if(myNode->number==key)
- {
- node *newNode = (node *) malloc(sizeof(node));
- newNode->number = value;
- newNode->next = myNode->next;
- myNode->next = newNode;
- printf("%d is inserted after %d\n", value, key);
- flag = 1;
- break;
- }
- else
- myNode = myNode->next;
- }
- if(flag==0)
- printf("Key not found!\n");
- }
- void delete_item(int value)
- {
- node *myNode = head, *previous=NULL;
- int flag = 0;
- while(myNode!=NULL)
- {
- if(myNode->number==value)
- {
- if(previous==NULL)
- head = myNode->next;
- else
- previous->next = myNode->next;
- printf("%d is deleted from list\n", value);
- flag = 1;
- free(myNode);
- break;
- }
- previous = myNode;
- myNode = myNode->next;
- }
- if(flag==0)
- printf("Key not found!\n");
- }
- void search_item(int value)
- {
- node *searchNode = head;
- int flag = 0;
- while(searchNode!=NULL)
- {
- if(searchNode->number==value)
- {
- printf("%d is present in this list. Memory address is %d\n", value, searchNode);
- flag = 1;
- break;
- }
- else
- searchNode = searchNode->next;
- }
- if(flag==0)
- printf("Item not found\n");
- }
- void print_linked_list()
- {
- printf("\nYour full linked list is\n");
- node *myList;
- myList = head;
- while(myList!=NULL)
- {
- printf("%d ", myList->number);
- myList = myList->next;
- }
- puts("");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement