├── README.md └── link.. /README.md: -------------------------------------------------------------------------------- 1 | # singly-linked-list 2 | This C program manages a singly linked list with functions to insert nodes at the end, beginning, after, and before a specific node, and to delete nodes from the beginning, end, and a specified position. The `display` function prints the list. The `main` function demonstrates these operations. 3 | -------------------------------------------------------------------------------- /link..: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | struct Node{ 4 | int data; 5 | struct Node* next; 6 | }; 7 | typedef struct Node node; 8 | node *head=NULL; 9 | void insert(int d){ 10 | node*newnode=(node*)malloc(sizeof(node)); 11 | newnode->data=d; 12 | newnode->next=NULL; 13 | if(head ==NULL){ 14 | head=newnode; 15 | } 16 | else{ 17 | node *temp=head; 18 | while(temp->next!=NULL){ 19 | temp=temp->next; 20 | } 21 | temp->next=newnode; 22 | } 23 | } 24 | void insertbeg(int d){ 25 | node *newnode=(node*)malloc(sizeof(node)); 26 | newnode->data=d; 27 | newnode->next=head; 28 | head=newnode; 29 | } 30 | void insertafter(int x,int d){ 31 | node *newnode=(node *)malloc(sizeof(node)); 32 | newnode->data=d; 33 | newnode->next=NULL; 34 | node*temp=head; 35 | while(temp->data!=x){ 36 | temp=temp->next; 37 | } 38 | newnode->next=temp->next; 39 | temp->next=newnode; 40 | 41 | } 42 | void insertbefor(int x,int d){ 43 | node *newnode=(node *)malloc(sizeof(node)); 44 | newnode->data=d; 45 | newnode->next=NULL; 46 | node*prev=NULL; 47 | node*temp=head; 48 | while(temp->data!=x){ 49 | prev=temp; 50 | temp=temp->next; 51 | } 52 | newnode->next=temp; 53 | prev->next=newnode; 54 | 55 | } 56 | void deletebeg(){ 57 | if(head==NULL){ 58 | printf("\n Empty"); 59 | } 60 | node*temp=head; 61 | head=temp->next; 62 | free(temp); 63 | } 64 | void deleteEnd(){ 65 | if(head==NULL){ 66 | printf("\n Empty"); 67 | } 68 | if(head->next==NULL){ 69 | free(head); 70 | head=NULL; 71 | } 72 | node*temp=head; 73 | node*prev=NULL; 74 | while(temp->next!=NULL){ 75 | prev=temp; 76 | temp=temp->next; 77 | } 78 | free(temp); 79 | prev->next=NULL; 80 | 81 | } 82 | void display(){ 83 | node *temp; 84 | temp=head; 85 | while(temp!=NULL){ 86 | printf("%d->",temp->data); 87 | temp=temp->next; 88 | } 89 | printf("NULL"); 90 | } 91 | void posdelete(int p){ 92 | if(head==NULL){ 93 | printf("\n list Empty"); 94 | } 95 | if(p==0){ 96 | deletebeg(); 97 | return; 98 | } 99 | node*temp=head; 100 | node*prev=NULL; 101 | int current=0; 102 | while(temp!=NULL && current!=p){ 103 | prev=temp; 104 | temp=temp->next; 105 | current++; 106 | } 107 | prev->next=temp->next; 108 | free(temp); 109 | if(temp==NULL){ 110 | printf("\n Invalid"); 111 | } 112 | } 113 | int main() { 114 | insert(10); 115 | insert(20); 116 | insert(60); 117 | insertbeg(30); 118 | insertbefor(20,40); 119 | insertafter(40,50); 120 | deletebeg(); 121 | deleteEnd(); 122 | display(); 123 | posdelete(2); 124 | display(); 125 | return 0; 126 | } 127 | --------------------------------------------------------------------------------