void test_insert(list_t *list) { result_t insert_result; insert_result = insert_at_begin(list, 10); assert(insert_result == SUCCESS && is_at_begining(list, 10) == TRUE); insert_result = insert_at_end(list, 40); assert(insert_result == SUCCESS && is_at_end(list, 40) == TRUE); insert_result = insert_before_data(list, 40, 30); assert(insert_result == SUCCESS && is_before(list, 30, 40) == TRUE); insert_result = insert_before_data(list, 10, 5); assert(insert_result == SUCCESS && is_before(list, 5, 10) == TRUE); insert_result = insert_before_data(list, 100, 50); assert(insert_result == ERROR && is_before(list, 50, 100) == FALSE); insert_result = insert_after_data(list, 40, 50); assert(insert_result == SUCCESS && is_after(list, 50, 40) == TRUE); insert_result = insert_after_data(list, 5, 8); assert(insert_result == SUCCESS && is_after(list, 8, 5) == TRUE); insert_result = insert_after_data(list, 35, 45); assert(insert_result == ERROR && is_after(list, 45, 35) == FALSE); }
struct list * insert_at_pos(struct list *root, int val,int pos) { struct list *temp,*ptr; int count=1; ptr=root; if(pos<0) { printf("no such position\n"); return root; } if(pos==0) { root=insert_at_begin(root,val); printf("inserted at given position\n"); return root; } if(root==NULL) { printf("no such position\n"); return root; } while(count<pos) { ptr=ptr->next; if(ptr==NULL) { printf("no such position\n"); return root; } count++; } temp=getNode(); temp->val=val; temp->next=ptr->next; ptr->next=temp; printf("inserted at given position\n"); return root; }
main() { struct list *root=NULL; int choice,pos,val; printf("MENU : \n1.create\n2.insert at begin\n3.insert at end\n4.insert at pos\n5.delete at begin\n6.delete at end\n7.delete at pos\n8.display\n9.exit\n10.nth node from last\n"); while(1) { printf("enter ur choice\n"); scanf("%d",&choice); switch(choice) { case 1: if(root!=NULL) printf("list is already created\n"); else { printf("enter value\n"); scanf("%d",&val); root=insert_at_end(root,val); printf("list is created\n"); } break; case 2: printf("enter value\n"); scanf("%d",&val); root=insert_at_begin(root,val); printf("value is inserted at begin\n"); break; case 3: printf("enter the value\n"); scanf("%d",&val); root=insert_at_end(root,val); printf("val is inserted at end\n"); break; case 4: printf("enter val\n"); scanf("%d",&val); printf("enter pos\n"); scanf("%d",&pos); root=insert_at_pos(root,val,pos); break; case 5: if(root==NULL) printf("nothing to delete\n"); else { root=delete_at_begin(root); printf("node is deleted at begin\n"); } break; case 6: if(root==NULL) printf("nothing to delete\n"); else { root=delete_at_end(root); printf("node is deleted at end\n"); } break; case 7: printf("enter pos\n"); scanf("%d",&pos); root=delete_at_pos(root,pos); break; case 8: display(root); break; case 9: exit(0); case 10: printf("enter n value \n"); scanf("%d", &pos); val=nth_node_val_from_last(root,pos); if(val!=777) printf("the nth node value from last is %d\n",val); break; } } }