Ejemplo n.º 1
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);
}
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;
		}

	}

}