예제 #1
0
파일: client.c 프로젝트: hriships/DS_ALGO
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);
}
예제 #2
0
파일: main.c 프로젝트: zakee94/My-Codes
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;
}
예제 #3
0
파일: client.c 프로젝트: hriships/DS_ALGO
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);
}
예제 #4
0
파일: main.c 프로젝트: zakee94/My-Codes
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++;
    }
            
        
}
예제 #5
0
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);
}
예제 #6
0
파일: hw4.c 프로젝트: alexnaspo/homework
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);
  }
}
예제 #7
0
파일: main.c 프로젝트: zakee94/My-Codes
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);
    }
}
예제 #8
0
파일: client.c 프로젝트: hriships/DS_ALGO
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;
}
예제 #10
0
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;
}
예제 #11
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;
}
예제 #12
0
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);


    }

}
예제 #13
0
파일: main.c 프로젝트: zakee94/My-Codes
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;
}
예제 #14
0
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;
}
예제 #15
0
파일: client.c 프로젝트: hriships/DS_ALGO
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);
}
예제 #16
0
파일: client.c 프로젝트: hriships/DS_ALGO
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;
		}

	}

}
예제 #18
0
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;
}
예제 #19
0
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);
				}
		}
	}

}
예제 #20
0
파일: main.c 프로젝트: zakee94/My-Codes
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;
}