#include <stdlib.h> #include <string.h> #include<stdio.h> #include<conio.h> typedef struct node { int sid; char sname[25]; int ssem; struct node *link; } NODE; NODE *InsFront(NODE *, int, char *, int); NODE *InsBack(NODE *, int, char *, int); NODE *InsPos(NODE *, int, char *, int, int); NODE *DelNode(NODE *, int); NODE *SrchUpdate(NODE *, int); void Display(NODE *); main() { NODE *start = NULL; /* Main Program */ int opn, id, sem, p, insopn; char name[25]; do { clrscr(); printf("\n ### Linked List Operations ### \n\n"); printf("\n Press 1-Insertion, 2-Deletion, 3-Search, 4-Display,5-Exit\n"); printf("\n Your option ? "); scanf("%d", &opn); switch (opn) { case 1: printf("Insertion at: Press 1->Front 2->Back 3->Pos ? "); scanf("%d", &insopn); printf("\n\nRead the Sid,Name, and Sem details ?"); scanf("%d%s%d", &id, name, &sem); if (insopn == 1) start = InsFront(start, id, name, sem); else if (insopn == 2) start = InsBack(start, id, name, sem); else if (insopn == 3) { printf(" At What Position ? "); scanf("%d", &p); start = InsPos(start, id, name, sem, p); } break; case 2: printf(" Read the Student Id of the Node to be deleted ? "); scanf("%d", &id); start = DelNode(start, id); break; case 3: printf(" Read the Student Id of the Node to be Searched ? "); scanf("%d", &id); start = SrchUpdate(start, id); break; case 4: printf(" Linked List is \n"); Display(start); break; case 5: printf("\n\n Terminating \n\n"); break; default: printf("\n\nInvalid Option !!! Try Again !! \n\n"); break; } printf("\n\n\n\n Press a Key to Continue . . . "); getch(); } while (opn != 5); } NODE *InsFront(NODE *st, int id, char *name, int sem) { NODE *temp; temp = (NODE *) malloc(sizeof(NODE)); if (temp == NULL) { printf(" Out of Memory !! Overflow !!!"); return (st); } else { temp->sid = id; strcpy(temp->sname, name); temp->ssem = sem; temp->link = st; printf(" Node has been inserted at Front Successfully !!"); return (temp); } } NODE *InsBack(NODE *st, int id, char *name, int sem) { NODE *temp, *t; temp = (NODE *) malloc(sizeof(NODE)); if (temp == NULL) { printf(" Out of Memory !! Overflow !!!"); return (st); } else { temp->sid = id; strcpy(temp->sname, name); temp->ssem = sem; temp->link = NULL; if (st == NULL) return (temp); else { t = st; while (t->link != NULL) t = t->link; t->link = temp; printf(" Node has been inserted at Back Successfully !!"); return (st); } } } NODE *InsPos(NODE *st, int id, char *name, int sem, int pos) { NODE *temp, *t, *prev; int cnt; temp = (NODE *) malloc(sizeof(NODE)); if (temp == NULL) { printf(" Out of Memory !! Overflow !!!"); return (st); } else { temp->sid = id; strcpy(temp->sname, name); temp->ssem = sem; temp->link = NULL; if (pos == 1) /* Front Insertion */ { temp->link = st; return (temp); } else { t = st; cnt = 1; while (t != NULL && cnt != pos) { prev = t; t = t->link; cnt++; } if (t) /* valid Position Insert new node*/ { prev->link = temp; temp->link = t; } else printf(" Invalid Position !!!"); printf(" Node has been inserted at given Position Successfully !!"); return (st); } } } NODE *DelNode(NODE *st, int id) { NODE *t, *prev; if (st == NULL) { printf(" Underflow!!!"); return (st); } else { t = st; if (st->sid == id) /* Front Deletion */ { st = st->link; t->link = NULL; free(t); return (st); } else { while (t != NULL && t->sid != id) { prev = t; t = t->link; } if (t) /* node to be deleted found*/ { prev->link = t->link; t->link = NULL; free(t); } else printf(" Invalid Student Id !!!"); return (st); } } } NODE *SrchUpdate(NODE *st, int id) { NODE *t; if (st == NULL) { printf(" Empty List !!"); return (st); } else { t = st; while (t != NULL && t->sid != id) { t = t->link; } if (t) /* node to be Updated found*/ { printf(" Node with Student Id %d found inthe List !\n", id); printf(" Read the New Id,Name and Sem forthe Student\n"); scanf("%d%s%d", t->sid, t->sname, t->ssem); } else printf(" Invalid Student Id !!!"); return (st); } } void Display(NODE *st) { NODE *t; if (st == NULL) printf("Empty List\n"); else { t = st; printf("Start->"); while (t) { printf("[%d,%s,%d]->", t->sid, t->sname, t->ssem); t = t->link; } printf("Null\n"); } }
WAP to Create Single Linked List
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment