Esempio n. 1
0
int test_delete_last()
{
	const char *test_name = __func__;
	struct llist *list1;
	struct llist *list2;
	struct list_elem *el;

	list1 = create_llist();
	append_element(list1, "omega");

	list2 = delete_after(list1, -1, 1);

	/* check list1 */
	if (0 != list1->count) {
		printf ("%s: expected count of 0, got %d.\n", 
				test_name, list1->count);
		return 1;
	}
	if (NULL != list1->head) {
		printf ("%s: expected NULL head, got '%s'.\n", test_name,
				(char *) list1->head->data);
		return 1;
	}
	if (NULL != list1->tail) {
		printf ("%s: expected NULL tail, got '%s'.\n", test_name,
				(char *) list1->tail->data);
		return 1;
	}

	/* check list2 */
	if (1 != list2->count) {
		printf ("%s: expected count of 1, got %d.\n", 
				test_name, list2->count);
		return 1;
	}
	el = list2->head;
	if (strcmp("omega", (char *) el->data) != 0) {
		printf ("%s: expected 'omega' at head, got '%s'.\n", test_name,
				(char *) el->data);
		return 1;
	}
	el = list2->tail;
	if (strcmp("omega", (char *) el->data) != 0) {
		printf ("%s: expected 'omega' at tail, got '%s'.\n", test_name,
				(char *) el->data);
		return 1;
	}
	el = el->next;
	if (NULL != el) {
		printf ("%s: expected NULL next, got '%s'.\n", test_name,
				(char *) el->data);
		return 1;
	}

	printf("%s ok.\n", test_name);
	return 0;
}
Esempio n. 2
0
void main()
{
	int opt;
	clrscr();
	do
	{
		clrscr();
		printf("\npress 1 for insert beg:");
		printf("\npress 2 for insert end:");
		printf("\npress 3 for insert after:");
		printf("\npress 4 for insert before:");

		printf("\npress 5 for delete beg:");
		printf("\npress 6 for delete end:");
		printf("\nlpress 7 for delete after :");
		printf("\npress 8 for delete before:");
		printf("\npress 9 for deleter that:");

		printf("\npress 10 for delete odd:");
		printf("\npress 11 for delete even:");

		printf("\npress 12 for sorting:");
		printf("\npress 13 for reverse:");

		printf("\npress 14 for insert in sorted order ;");
		printf("\npress 15 for display");
		printf("\nenter the option:");
		scanf("%d",&opt);
		switch(opt)
		{
			case 1:insert_beg(&ptr); break;
			case 2:insert_end(&ptr);break;
			case 3:insert_after(&ptr);break;
			case 4:insert_before(&ptr);break;

			case 5:delete_beg(&ptr); break;
			case 6:delete_end(&ptr);break;
			case 7:delete_after(&ptr);break;
			case 8:delete_before(&ptr);break;
		 /**/	case 9:delete_that(&ptr);break;

			case 10:delete_alter_odd(&ptr);break;
			case 11:delete_alter_even(&ptr);break;

			case 12:sort(&ptr);break;
			case 13:reverse(&ptr);break;
		/**/	case 14:insert_sort(&ptr);break;

			case 15:display(&ptr);break;
		}
		getch();
	}while(opt!=99);
	getch();
}
Esempio n. 3
0
void josephus(int n, int m)
    {   /* solve josephus problem, n nodes, step m */
    node *t;
    int i;
    insert_nodes(n);
    t = head;
    printf("\nAnswer : ");
    while (t != t->next)
	{
	for (i = 0; i < m-1; i++)
	    t = t->next;
	printf("%d  ", t->next->key);
	delete_after(t);
	}
    printf("%d", t->key);  /* print last node */
    }
Esempio n. 4
0
int test_delete_last_few()
{
	const char *test_name = __func__;
	struct llist *list1;
	struct llist *list2;
	struct list_elem *el;

	list1 = create_llist();
	append_element(list1, "ichi");
	append_element(list1, "ni");
	append_element(list1, "san");
	append_element(list1, "shi");
	append_element(list1, "go");

	list2 = delete_after(list1, -1, 5);

	/* check list1 */
	if (0 != list1->count) {
		printf ("%s: expected count of 0, got %d.\n", 
				test_name, list1->count);
		return 1;
	}
	if (NULL != list1->head) {
		printf ("%s: expected NULL head, got '%s'.\n", test_name,
				(char *) list1->head->data);
		return 1;
	}
	if (NULL != list1->tail) {
		printf ("%s: expected NULL tail, got '%s'.\n", test_name,
				(char *) list1->tail->data);
		return 1;
	}

	/* check list2 */
	if (5 != list2->count) {
		printf ("%s: expected count of 5, got %d.\n", 
				test_name, list2->count);
		return 1;
	}
	el = list2->head;
	if (strcmp("ichi", (char *) el->data) != 0) {
		printf ("%s: expected 'ichi' at head, got '%s'.\n", test_name,
				(char *) el->data);
		return 1;
	}
	el = el->next;
	if (strcmp("ni", (char *) el->data) != 0) {
		printf ("%s: expected 'ni', got '%s'.\n", test_name,
				(char *) el->data);
		return 1;
	}
	el = el->next;
	if (strcmp("san", (char *) el->data) != 0) {
		printf ("%s: expected 'san', got '%s'.\n", test_name,
				(char *) el->data);
		return 1;
	}
	el = el->next;
	if (strcmp("shi", (char *) el->data) != 0) {
		printf ("%s: expected 'shi', got '%s'.\n", test_name,
				(char *) el->data);
		return 1;
	}
	el = el->next;
	if (strcmp("go", (char *) el->data) != 0) {
		printf ("%s: expected 'go', got '%s'.\n", test_name,
				(char *) el->data);
		return 1;
	}
	el = list2->tail;
	if (strcmp("go", (char *) el->data) != 0) {
		printf ("%s: expected 'go' at tail, got '%s'.\n", test_name,
				(char *) el->data);
		return 1;
	}
	el = el->next;
	if (NULL != el) {
		printf ("%s: expected NULL next, got '%s'.\n", test_name,
				(char *) el->data);
		return 1;
	}

	printf("%s ok.\n", test_name);
	return 0;
}
Esempio n. 5
0
int test_delete_at_tail()
{
	const char *test_name = "test_delete_at_tail";
	struct llist *list1;
	struct llist *list2;
	struct list_elem *el;

	list1 = create_llist();
	append_element(list1, "yksi");
	append_element(list1, "kaksi");
	append_element(list1, "kolme");
	append_element(list1, "neljä"); 
	append_element(list1, "viisi"); 
	append_element(list1, "kuusi"); 
	append_element(list1, "seitsemän"); 
	append_element(list1, "kahdeksan"); 
	append_element(list1, "yhdeksän");
	append_element(list1, "kymmenen");

	list2 = delete_after(list1, 6, 3);

	/* check list1 */
	if (7 != list1->count) {
		printf ("%s: expected count of 7, got %d.\n", 
				test_name, list1->count);
		return 1;
	}
	el = list1->head;
	if (strcmp("yksi", (char *) el->data) != 0) {
		printf ("%s: expected 'yksi', got '%s'.\n", test_name,
				(char *) el->data);
		return 1;
	}
	el = el->next;
	if (strcmp("kaksi", (char *) el->data) != 0) {
		printf ("%s: expected 'kaksi', got '%s'.\n", test_name,
				(char *) el->data);
		return 1;
	}
	el = el->next;
	if (strcmp("kolme", (char *) el->data) != 0) {
		printf ("%s: expected 'kolme', got '%s'.\n", test_name,
				(char *) el->data);
		return 1;
	}
	el = el->next;
	if (strcmp("neljä", (char *) el->data) != 0) {
		printf ("%s: expected 'neljä', got '%s'.\n", test_name,
				(char *) el->data);
		return 1;
	}
	el = el->next;
	if (strcmp("viisi", (char *) el->data) != 0) {
		printf ("%s: expected 'viisi', got '%s'.\n", test_name,
				(char *) el->data);
		return 1;
	}
	el = el->next;
	if (strcmp("kuusi", (char *) el->data) != 0) {
		printf ("%s: expected 'kuusi', got '%s'.\n", test_name,
				(char *) el->data);
		return 1;
	}
	el = el->next;
	if (strcmp("seitsemän", (char *) el->data) != 0) {
		printf ("%s: expected 'seitsemän', got '%s'.\n", test_name,
				(char *) el->data);
		return 1;
	}
	if (strcmp("seitsemän", (char *) list1->tail->data) != 0) {
		printf ("%s: expexted list tail to be 'seitsemän', got '%s'.\n",
				test_name, (char *) list1->tail->data);
		return 1;
	}
	if (NULL != list1->tail->next) {
		printf ("%s: list1 is not terminated.\n", test_name);
		return 1;
	}

	/* check list2 */
	if (3 != list2->count) {
		printf ("%s: expected count of 3, got %d.\n", 
				test_name, list2->count);
		return 1;
	}
	el = list2->head;
	if (strcmp("kahdeksan", (char *) el->data) != 0) {
		printf ("%s: expected 'kahdeksan', got '%s'.\n", test_name,
				(char *) el->data);
		return 1;
	}
	el = el->next;
	if (strcmp("yhdeksän", (char *) el->data) != 0) {
		printf ("%s: expected 'yhdeksän', got '%s'.\n", test_name,
				(char *) el->data);
		return 1;
	}
	el = el->next;
	if (strcmp("kymmenen", (char *) el->data) != 0) {
		printf ("%s: expected 'kymmenen', got '%s'.\n", test_name,
				(char *) el->data);
		return 1;
	}
	if (strcmp("kymmenen", (char *) list2->tail->data) != 0) {
		printf ("%s: expexted list tail to be 'kymmenen', got '%s'.\n",
				test_name, (char *) list2->tail->data);
		return 1;
	}
	if (NULL != list2->tail->next) {
		printf ("%s: list2 is not terminated.\n", test_name);
		return 1;
	}

	printf("%s ok.\n", test_name);
	return 0;
}