예제 #1
0
REGTYPE* randomize(void) {

	REGTYPE *currentPos, *currentPrev, *first, *prevTemp;

	first = add_first(malloc(sizeof(REGTYPE)),(rand() % 100));
	currentPos = first;
	currentPrev = first;
	prevTemp = NULL;

	int i = 0;
	for (i = 0; i < MAX; i++) {
		currentPos->next = malloc(sizeof(REGTYPE));
		prevTemp = currentPos->next;

		printf("--- Index %i\n", i);
		printf("This: %p\n", currentPos);
		printf("Num: %i (random)\n", currentPos->number);
		printf("Next: %p\n", currentPos->next);
		printf("Prev: %p\n", currentPos->prev);
		
		currentPos = currentPos->next;
		currentPos->number = rand() % 100 + 1;
		currentPos->prev = currentPrev;
		currentPrev = prevTemp;

		

	}
	return first;
}
예제 #2
0
파일: list.c 프로젝트: xymus/labos-inf7330
int main(void) {
	struct liste l;
	new_list(&l);
	add_first(1, &l);
	show_list(&l);

	printf( "#1\n" );
	add_tail(2, &l);
	add_first(-10, &l);
	show_list(&l);

	printf( "#2\n" );
	list_remove_tail(&l);
	show_list(&l);

	return 0;
}
예제 #3
0
파일: pb.c 프로젝트: juliannieb/UVa
int main () {
	int t;

	while (scanf("%i%*c", &t) != EOF) {
		while (t) {

			struct list pila;

			pila.head = NULL;
			pila.size = 0;

			char str[128];
			gets(str);

			int len = strlen(str);
			int i;
			char p;
			int flag = 1;

			for (i = 0; i < len; i ++) {
				p = str[i];

				if (is_empty(&pila) && (p == ')' || p == ']')) {
					flag = 0;
					printf("No\n");
					break;
				}else if (p == '(' || p == '[') {
					add_first(&pila, p);
				}else if (p == ')') {
					if (get_first(&pila) == '(') remove_first(&pila);
					else {
						flag = 0;
						printf("No\n");
						break;
					}
				}else if (p == ']') {
					if (get_first(&pila) == '[') remove_first(&pila);
					else {
						flag = 0;
						printf("No\n");
						break;
					}
				}
			}

			if (flag) {
				if (is_empty(&pila)) {
					printf("Yes\n");
				}else {
					printf("No\n");
				}
			}
			t--;
		}
	}
	return 0;
}
예제 #4
0
    inline bool st_search(StateParser & stparser, const char * s)
    {
        if ( stparser.empty()) {
            return false;
        }

        StatesValue stval(stparser.states(), stparser.nb_capture());

// #ifdef DISPLAY_TRACE
//         display_states(stval, stparser.root());
// #endif

        st_step_range_list_t lst;
        st_step_range_list_t l1;
        add_first(lst, l1, stparser.root());
        if (l1.empty() && lst.empty()) {
            return false;
        }
        utf8_consumer consumer(s);
        st_step_range_list_t l2;
        bool res = false;
        unsigned count = 1;
        while (consumer.valid()) {
#ifdef DISPLAY_TRACE
            std::cout << "\033[01;31mc: '" << utf8_char(consumer.getc()) << "'\033[0m\n";
#endif
            for (st_step_range_iterator_t first = lst.begin(), last = lst.end(); first != last; ++first) {
                if (stval.get_num_at(first->first) != count) {
                    l1.push_back(*first);
                }
            }
            if (l1.empty()) {
                return false;
            }
            l2.clear();
            if ((res = st_step(l1, l2, stval, consumer.bumpc(), consumer, ++count))) {
                break ;
            }
            l1.swap(l2);
        }
        if (res) {
            return true;
        }
        if (consumer.valid()) {
            return false;
        }
        for (st_step_range_iterator_t first = l1.begin(), last = l1.end(); first != last; ++first) {
            if (first->first->type == LAST) {
                return true;
            }
        }
        return false;
    }
예제 #5
0
 inline void add_first(st_step_range_list_t & l, st_step_range_list_t & lfirst, const State * st)
 {
     if (st->is_split()) {
         if (st->out1) {
             add_first(l, lfirst, st->out1);
         }
         if (st->out2) {
             add_first(l, lfirst, st->out2);
         }
     }
     else if (st->is_cap()) {
         if (st->out1) {
             add_first(l, lfirst, st->out1);
         }
     }
     else if (st->type == FIRST) {
         if (st->out1) {
             add_first(lfirst, lfirst, st->out1);
         }
     }
     else {
         l.push_back(st_step_elem_t(st, 0));
     }
 }
예제 #6
0
파일: code.cpp 프로젝트: samrrr/Labs
//добавление узла в н-ную позицию
NODE* add_n(NODE* list)
{
	if (!list)
	{
		system("cls");
		printf_s("\n Список пуст, запись будет осуществлена в начало\n\n ");
		system("pause");
		list = add_first(list);
	}
	else
	{
		int n = get_n(amt(list), "Введите номер позиции, в которую следует добавить запись", "add");

		if (n == 1)
			list = add_first(list);
		else
			if (n == amt(list) + 1)
				list = add_last(list);
			else
			{
				NODE* nta = fill_fields();
				NODE *tmp = list;
				int i;
				for (i = 1; i < n - 1; i++)
					tmp = tmp->next;
				nta->next = tmp->next;
				tmp->next->prev = nta;
				nta->prev = tmp;
				tmp->next = nta;

				printf_s("\n Новая запись была добавлена в позицию № %d списка\n\n ", n);
				system("pause");
			}
	}
	return list;
}
예제 #7
0
파일: main.c 프로젝트: Alecs94/DSA-lab
void pseudo_cmd() {
    FILE* f;
    f = fopen("input.dat", "r");
    FILE* g;
    g = fopen("output.dat", "a");

    LIST* head = NULL;

    char com[15];
    char subcom[15];
    int x = 0;

    while (!feof(f)) {
        fscanf(f, " %[^\n]s", com);
//        fprintf(g, "%d \n", list_length(head));
//        print_all(head, g);
//        fprintf(g, "///////\n");
//        fprintf(g, "%s\n", com);
        sscanf(com, "%s %d", subcom, &x);

        if (!strcmp(subcom, "AF"))
            add_first(&head, x);
        else if (!strcmp(subcom, "AL"))
            add_last(&head, x);
        else if (!strcmp(subcom, "DF"))
            del_first(&head);
        else if (!strcmp(subcom, "DL"))
            del_last(&head);
        else if (!strcmp(subcom, "DOOM_THE_LIST"))
            doom_the_list(&head);
        else if (!strcmp(subcom, "DE"))
            del_x(&head, x);
        else if (!strcmp(subcom, "PRINT_ALL"))
            print_all(head, g);
        else if (!strcmp(subcom, "PRINT_F"))
            print_first_n(head, x, g);
        else if (!strcmp(subcom, "PRINT_L"))
            print_last_n(head, x, g);

    }
    doom_the_list(&head);
}
예제 #8
0
파일: code.cpp 프로젝트: samrrr/Labs
//добавление узла в конец
NODE* add_last(NODE* list)
{
	if (!list)
		list = add_first(list);
	else
	{
		NODE* nta = fill_fields();
		NODE* tmp = list;

		while (tmp->next)
			tmp = tmp->next;
		tmp->next = nta;
		nta->prev = tmp;
		nta->next = NULL;

		printf_s("\n Новая запись была добавлена в конец списка\n\n ");
		system("pause");
	}

	return list;
}
    inline bool st_exact_search(StateParser & stparser, const char * s)
    {
        if ( stparser.empty() ) {
            return false;
        }

        StatesValue stval(stparser.states(), stparser.nb_capture());

// #ifdef DISPLAY_TRACE
//         display_states(stval, stparser.root());
// #endif

        st_step_range_list_t l1;
        add_first(l1, l1, stparser.root());
        if (l1.empty()) {
            return false;
        }
        utf8_consumer consumer(s);
        st_step_range_list_t l2;
        bool res = false;
        unsigned count = 1;
        while (consumer.valid() && !(res = st_exact_step(l1, l2, stval, consumer.bumpc(), consumer, ++count))) {
#ifdef DISPLAY_TRACE
            std::cout << "\033[01;31mc: '" << utf8_char(consumer.getc()) << "'\033[0m\n";
#endif
            if (l2.empty()) {
                return false;
            }
            l1.swap(l2);
            l2.clear();
        }

        if (consumer.valid()) {
            return false;
        }
        if (res) {
            return true;
        }
        return false;
    }
예제 #10
0
파일: code.cpp 프로젝트: samrrr/Labs
//меню добавления узлов с клавиатуры
NODE* add(NODE* list)
{
	int uc;

	do
	{
		system("cls");

		printf_s("\n ДОБАВЛЕНИЕ ДАННЫХ ВРУЧНУЮ\n\n");
		puts(" 1 - В начало списка");
		puts(" 2 - В произвольную позицию");
		puts(" 3 - В конец списка");
		puts(" 0 - Назад");

		uc = userchoice();

		switch (uc)
		{
		case 1:
			list = add_first(list);
			break;
		case 2:
			list = add_n(list);
			break;
		case 3:
			list = add_last(list);
			break;
		case 0:
			break;
		default:
			system("cls");
			printf_s("\n ОШИБКА\n");
			printf_s("\n Введите существующий пункт\n\n ");
			system("pause");
			break;
		}
	} while (uc && uc < 0 || uc > 3);

	return list;
}
예제 #11
0
파일: Func.cpp 프로젝트: aodpi/Pharmacy
void build_menu()
{
	Preparat p;
	system("color 02");
menustart:
	system("cls");
	printf("Alegeti optiunea:\n\n");
	printf("1. Adauga element la inceputul listei.\n");
	printf("2. Adauga element la sfarsitul listei.\n");
	printf("3. Afiseaza lista din memorie.\n");
	printf("4. Afiseaza lista din fisier.\n");
	printf("5. Sterge un element din lista.\n");
	printf("6. Incarca lista din fisier in memorie.\n");
	printf("7. Sterge toate elementele listei din memorie.\n");
	printf("8. Sorteaza elementele in fisier dupa metoda Shell.\n");
	printf("9. Salveaza lista in fisier.\n");
	printf("10. Modifica un element din lista.\n");
	printf("11. Iesire din program.\n\n");
	int option;
	scanf("%d", &option);
	system("cls");
	switch (option)
	{
	case 1:
		printf("Nume preparat:");
		scanf("%s", &p.nume);
		printf("Pret:");
		scanf("%d", &p.pret);
		printf("Este nevoie de prescriptie medicala? (Da/Nu):");
		scanf("%s", &p.pr_med);
		printf("Tip Preperat:");
		scanf("%s", &p.tip);
		add_first(p);
		goto menustart;
		break;
	case 2:
		printf("Nume preparat:");
		scanf("%s", &p.nume);
		printf("Pret:");
		scanf("%d", &p.pret);
		printf("Este nevoie de prescriptie medicala? (Da/Nu):");
		scanf("%s", &p.pr_med);
		printf("Tip Preperat:");
		scanf("%s", &p.tip);
		add_last(p);
		goto menustart;
		break;
	case 3:
		display(0);
		getch();
		goto menustart;
		break;
	case 4:
		display(1);
		getch();
		goto menustart;
		break;
	case 5:
		printf("Indicati indexul elementului pentru a fi sters:");
		int index;
		scanf("%d", &index);
		delete_at(index);
		getch();
		goto menustart;
		break;
	case 6:
		read_from_file();
		goto menustart;
		break;
	case 7:
		clear_list();
		printf("Sters cu success!!");
		getch();
		goto menustart;
		break;
	case 8:
		file_shell_sort();
		getch();
		goto menustart;
		break;
	case 9:
		save_to_file();
		goto menustart;
		break;
	case 10:
		printf("\nDati indexul elementului ce necesita modificare:");
		int ind;
		scanf("%d", &ind);
		edit_at(ind);
		goto menustart;
	case 11:
		exit(0);
		break;
	default:
		printf("Optiune indicata gresit.");
		break;
	}
}