void test_reverse_lists() { list_t *list = create_list(); insert_at_end(list, 10); insert_at_end(list, 20); insert_at_end(list, 30); insert_at_end(list, 40); result_t reverse_result = reverse_list(list); assert(reverse_result == SUCCESS && is_at_begining(list, 40) && insert_before_data(list, 40, 30) && is_after(list, 10, 20) && is_at_end(list, 10)); distroy(&list); }
int main(int argc, char **argv) { int choice, insert_end; do { printf("\n\n<< QUEUE CONTROL >>\n\n"); printf("Enter 1 to INSERT\n"); printf("Enter 2 to DISPLAY\n"); printf("Enter 3 to DELETE\n"); printf("Enter 0 to EXIT\n\n"); scanf("%d",&choice); switch(choice) { case 1: printf("\nEnter a number :- "); scanf("%d", &insert_end); insert_at_end(insert_end); break; case 2: printf("\nDISPLAYING :-\n\n"); display_frm_beg(); printf("\nTotal elemnts = %d\n", count); break; case 3: del_at_first(); break; default: if (choice != 0) printf("\nWrong choice selected ! TRY AGAIN !\n"); break; } }while(choice != 0); return 0; }
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); }
void insert_at_nth(int input_nth) { int pos, i_ian; struct node *trav, *temp; printf("Enter the position :- "); scanf("%d", &pos); if (pos > count+1 || pos < 0) printf("Position exceeds/is less than number of elements !\n"); else if (pos == 1) insert_at_first(input_nth); else if (pos == count +1) insert_at_end(input_nth); else { struct node *ins_nth = (struct node *)malloc(sizeof(struct node)); ins_nth->data = input_nth; trav = head; for (i_ian = 0; i_ian < pos-2; i_ian++) trav = trav->next; temp = trav->next; trav->next = ins_nth; temp->prev = ins_nth; ins_nth->next = temp; ins_nth->prev = trav; count++; } }
void insert_at_pos() { display(); int pos,bg_no,i; printf("Enter the position where you want to insert a bogie:"); scanf("%d",&pos); pos--; struct train *ptr,*new_bogie; ptr=start; for(i=1;i<pos;i++) { ptr=ptr->chain; if(ptr==NULL) { printf("Invalid Positon to insert bogie!!!\n"); return 0; } } bg_no=getInput(); if(ptr->chain==NULL) { insert_at_end(bg_no); } else { new_bogie=create_bogie(bg_no); new_bogie->chain=ptr->chain; ptr->chain=new_bogie; } printf("New Bogie insert at position %d.\n",++pos); }
void build_a_lst(char *fn) { FILE *fp; char line[LINE_LENGTH]; if ((fp = fopen(fn,"r")) != NULL) { while (fgets(line, LINE_LENGTH, fp) != NULL) { insert_at_end(line); /* insert a user at end of the list */ } fclose (fp); } }
void bot() { struct node *popped_tree = root; if (popped_tree == NULL) printf("Tree is empty !\n"); else { insert_at_end(q_head, popped_tree, popped_tree->data); q_count++; do { popped_tree = del_at_first(); if (popped_tree->lc != NULL) { insert_at_end(q_head, popped_tree->lc, popped_tree->lc->data); q_count++; } if (popped_tree->rc != NULL) { insert_at_end(q_head, popped_tree->rc, popped_tree->rc->data); q_count++; } }while(q_count != 0); } }
void test_sorting(list_t *list) { int i, num_of_elements; srand(time(NULL)); num_of_elements = rand()%16; for(i=0; i < num_of_elements; i++) { insert_at_end(list, rand()); } result_t sort_result = sort(list); assert(sort_result == SUCCESS); }
struct node * create_linkedlist(int items[]) { int i; struct node *start,*end=NULL; if(items[0]!='\0') { end=(struct node *)malloc(sizeof(struct node)); end->data=items[0]; end->next=NULL; } start=end; if(items[0]!='\0') for(i=1;items[i]!='\0';i++) end=insert_at_end(end,items[i]); return start; }
bool los_mark( los_t *los, los_list_t *marked, word *w, int gen_no ) { word *p = prev( w ); /* assert( w is the address of a live large object ); */ if (p == 0) return 1; /* Already marked and moved */ assert( ishdr( *w ) ); remove( w ); los->object_lists[ gen_no ]->bytes -= size( w ); /* marked->bytes += size( w ); WRONG! -- insert_at_end does this too */ insert_at_end( w, marked ); set_prev( w, 0 ); return 0; }
word *los_allocate( los_t *los, int nbytes, int gen_no ) { word *w; int size; assert( 0 <= gen_no && gen_no < los->generations && nbytes > 0 ); size = roundup_page( nbytes + sizeof(word)*HEADER_WORDS ); w = gclib_alloc_heap( size, gen_no ); gclib_add_attribute( w, size, MB_LARGE_OBJECT ); w += HEADER_WORDS; set_size( w, size ); insert_at_end( w, los->object_lists[ gen_no ] ); supremely_annoyingmsg( "{LOS} Allocating large object size %d at 0x%p", size, w ); return w; }
void create_Train() { clearTerminal(); if(start!=NULL) { printf("\aTrain already created.You can now add bogies to it!!!\n"); } else { int no_of_bogies,counter; printf("How many bogies you want to add?:"); scanf("%d",&no_of_bogies); struct train *temp; temp = (struct train *)malloc(sizeof(struct train)); for(counter=1;counter<=no_of_bogies;counter++) { int number; printf("Enter the Number of %d th bogie:",counter); scanf("%d",&number); if(start==NULL) { temp->bogie_no=number; temp->chain=NULL; start=temp; } else { insert_at_end(number); } } printf("Train is created with %d bogies.\n",--counter); } }
void insert_at_end(struct q_node *ins_node, struct node *input_tree_add, int input_end) { if (ins_node == NULL) { struct q_node *ins_end = (struct q_node *)malloc(sizeof(struct q_node)); ins_end->q_data_var.num_data = input_end; ins_end->q_data_var.tree_add = input_tree_add; ins_end->next = NULL; q_head = ins_end; } else if (ins_node->next == NULL) { struct q_node *ins_end = (struct q_node *)malloc(sizeof(struct q_node)); ins_end->q_data_var.num_data = input_end; ins_end->q_data_var.tree_add = input_tree_add; ins_end->next = NULL; ins_node->next = ins_end; } else insert_at_end(ins_node->next, input_tree_add, input_end); return; }
int main() { struct node* head; int ch; printf("\nEnter more than 5 nodes for proper execution of program\n"); scanf("%d", &ch); do { head = insert_at_end(head, ch); scanf("%d", &ch); }while (ch != -1); printf("\n"); print_ll(head); printf("\n"); make_linkage(head); struct node* ret_val = has_loops(head); if (ret_val) printf("\nLL has loop at %d \n", ret_val->data); else printf("\nLL has no loops\n"); return 0; }
void test_concat_lists() { list_t *list_1 = create_list(); list_t *list_2 = create_list(); insert_at_end(list_1, 10); insert_at_end(list_1, 20); insert_at_end(list_1, 30); insert_at_end(list_2, 40); insert_at_end(list_2, 50); insert_at_end(list_2, 60); list_t *new_list = concat(list_1, list_2); assert(is_at_begining(new_list, 10) && is_at_end(new_list, 60)); distroy(&new_list); }
void test_merge_lists() { list_t *list_1 = create_list(); list_t *list_2 = create_list(); insert_at_end(list_1, 100); insert_at_end(list_1, 54); insert_at_end(list_1, 65); insert_at_end(list_2, 87); insert_at_end(list_2, 120); insert_at_end(list_2, 45); list_t *merged_list = merge(list_1, list_2); assert(merged_list != NULL && is_at_begining(merged_list, 45) && is_at_end(merged_list, 120)); distroy(&merged_list); }
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; } } }
int main() { int choice; start=NULL; while(1){ clearTerminal(); printf("1.Create Train\n"); printf("2.Display Train\n"); printf("3.Insert Bogie into Train\n"); printf("4.Remove Bogie from Train\n"); printf("5.Search Bogie into Train\n"); printf("6.Reverse the Train\n"); printf("7.Exit"); printf("\nEnter Your choice : "); fflush(stdin); scanf("%d",&choice); clearTerminal(); switch(choice) { case 1: create_Train(); break; case 2: display(); break; case 3: if(start!=NULL) { clearTerminal(); printf("1.Insert at begining of the Train\n"); printf("2.Insert at End of the Train\n"); printf("3.Insert at Position of the Train\n"); printf("4.Back To Previous Menu.\n"); printf("\nEnter Your choice : "); fflush(stdin); scanf("%d",&choice); int bg_no; switch(choice) { case 1: insert_at_beg(getInput()); printf("Bogie Insert at begining of the Train.\n"); break; case 2: insert_at_end(getInput()); printf("Bogie Insert at end of the Train.\n"); break; case 3: insert_at_pos(); break; case 4: break; default: printf("\a\a\aInvalid Input!!!\n"); } } else { printf("\a\a\aThere no train is build yet!!!\n"); } break; case 7: exit(1); default: printf("\a\a\aInvalid Input!!!\n"); } printf("Press [Enter] key to continue.\n"); getchar(); getchar(); } return 3; }
int main() { int i=0; head=NULL; printf("insertion at begning of linked list - 1"); printf("\ninsertion at the end of linked list - 2"); printf("\ninsertion at the middle where you want - 3"); printf("\ndeletion from the end of linked list - 4"); printf("\ndeletion of the data that you want - 5"); printf("\nexit - 6\n"); while(1) { printf("\nenter the choice of operation to perform on linked list"); scanf("%d",&i); switch(i) { case 1: { int value; printf("\nenter the value to be inserted"); scanf("%d",&value); insert_at_begning(value); display(); break; } case 2: { int value; printf("\nenter value to be inserted"); scanf("%d",&value); insert_at_end(value); display(); break; } case 3: { int value,loc; printf("\nafter which data you want to insert the data"); scanf("%d",&loc); printf("\nenter the value to be inserted"); scanf("%d",&value); insert_at_middle(value,loc); display(); break; } case 4: { delete_from_end(); display(); break; } case 5: { int value; display(); printf("\nenter the data that you want to delete from the list shown above"); scanf("%d",&value); delete_from_middle(value); display(); break; } case 6: { exit(0); } } } }
int main(int argc, char **argv) { int choice, insert_first, insert_end, insert_nth, search_num; struct node *temp_reverse; do { printf("\n\n<< DOUBLY LINKED-LIST CONTROL >>\n\n"); printf("Enter 1 to INSERT AT BEGINNING\n"); printf("Enter 2 to INSERT AT END\n"); printf("Enter 3 to INSERT AT Nth POSITION\n"); printf("-----------------------------------\n"); printf("Enter 4 to DISPLAY FROM BEGINNING\n"); printf("Enter 5 to DISPLAY FROM END\n"); printf("-----------------------------------\n"); printf("Enter 6 to DELETE FROM BEGINNING\n"); printf("Enter 7 to DELETE FROM END\n"); printf("Enter 8 to DELETE FROM Nth POSITION\n"); printf("-----------------------------------\n"); printf("Enter 9 to SEARCH IN THE LIST\n"); printf("-----------------------------------\n\n"); printf("Enter 10 for << DOUBLY LINKED-LIST REVERSAL >>\n\n"); printf("----------------------------------------\n"); printf("Enter 0 to EXIT\n\n"); scanf("%d",&choice); switch(choice) { case 1: printf("\nEnter a number :- "); scanf("%d", &insert_first); insert_at_first(insert_first); break; case 2: printf("\nEnter a number :- "); scanf("%d", &insert_end); insert_at_end(insert_end); break; case 3: printf("\nEnter a number :- "); scanf("%d", &insert_nth); insert_at_nth(insert_nth); break; case 4: printf("\nDISPLAYING FROM BEGINNING:-\n\n"); display_frm_beg(); printf("\nTotal elemnts = %d\n", count); break; case 5: printf("\nDISPLAYING FROM END:-\n\n"); if(head == NULL) { printf("List is empty !\n"); printf("\nTotal elemnts = %d\n", count); } else { display_frm_end(head); printf("\nTotal elemnts = %d\n", count); } break; case 6: del_at_first(); break; case 7: del_at_end(); break; case 8: del_at_nth(); break; case 9: printf("\nEnter a number :- "); scanf("%d", &search_num); search(search_num); break; case 10: if(head == NULL) printf("List is empty !\n"); else { reverse(head); temp_reverse = head; head = tail; tail = temp_reverse; printf("List Reversed !\n"); } break; default: if (choice != 0) printf("\nWrong choice selected ! TRY AGAIN !\n"); break; } }while(choice != 0); return 0; }