Beispiel #1
0
int main(void) {
	
	struct Node *head = NULL;

	addEnd(&head, 15);
	addEnd(&head, 25);
	addBegin(&head, 14);
	addAt(&head, 22, 1);
	addAt(&head, 30, 4);
	addAt(&head, 30,4);

	struct Node *itr = head;
	while (itr != NULL) {
		printf("%d\n", itr->data);
		itr = itr->next;
	}
	puts("");

	deleteAt(&head, 6);
	
	itr = head;
	while (itr != NULL) {
		printf("%d\n", itr->data);
		itr = itr->next;
	}

	return 0;
}
Beispiel #2
0
void parseFile(List ** lists){
	FILE * fp = fopen("items.txt", "r");
	char * pch = NULL;
	char line[100] = "";
	int x=0;
	if (fp != NULL){
		while (fgets(line, 100, fp) != NULL){
			x=0;
			pch = strtok(line, "\t");
			while (pch != NULL){
				if (strlen(pch) > 2){
					char * newNode = malloc(100);
					strncpy(newNode, pch, 100);
				
					if (newNode[strlen(newNode)-1] == '\n')
						newNode[strlen(newNode)-1] = '\0';
					lists[x]->tail = addEnd(lists[x]->tail, newNode);
				}
				pch = strtok(NULL, "\t");
				x++;
			}
		}
		fclose(fp);
	}
}
Beispiel #3
0
void FormatList::addAfter(Format* r, string name) {
	if (name == "") {
		cout << "can not add empty data\n";
		return;
	}

	if (r == NULL) {
		cout << "element after not found\n";
		return;
	}

	if (r == end) {
		addEnd(name);
	}
	else {
		Format *p = new Format;
		if (p != NULL) {
			p->name = name;
			p->next = r->next;
			p->prev = r;
			counter++;
			r->next->prev = p;
			r->next = p;
			cout <<" new data added after " << r->name << " in the FormatList\n";
		}
		else {
			cout << "memory error";
		}
	}
}
Beispiel #4
0
 List(const List& kitas)
 {
     printf("copy const\n");
     b = nullptr;
     e = nullptr;
     c = nullptr; 
     for(Node* x = kitas.b; x != nullptr; x = x->next)
     {
         addEnd(x->data);
     }
 }
Beispiel #5
0
 List& operator=(const List& kitas)
 {
     b = nullptr;
     e = nullptr;
     c = nullptr; 
     for(Node* x = kitas.b; x != nullptr; x = x->next)
     {
         addEnd(x->data);
     }
     printf("=====\n");
     return *this;
 }
Beispiel #6
0
ListElement* AddAtBeginAndEnd(ListElement* list)
{
    list = addStart(list, 4);
    return addEnd(list, 2);
}
Beispiel #7
0
int menuList()
{
	setlocale(LC_ALL, "Rus");

	node_list *begin = NULL;
	node_list *end = NULL;

	int m;
	while (1)
	{
		system("CLS");
		cout << "Работа со списком:\t\t\t";
		cout << endl << endl << endl;
		cout << "1. Добавить в начало." << endl << endl;
		cout << "2. Добавить в конец." << endl << endl;
		cout << "3. Добавить после элемента равного n." << endl << endl;
		cout << "4. Добавить перед элементом равным n." << endl << endl;
		cout << "5. Удалить элемент равный n." << endl << endl;
		cout << "6. Сортировка." << endl << endl;
		cout << "7. Вывести список." << endl << endl;
		cout << "0. Выход." << endl << endl;


		cout << "Выберете пункт меню: ";
		while (scanIntVal(m) || (m < 0) || (m > 7))
		{
			cout << "\nОшибка. Попробуйте еще раз.\n\nВыберете пункт меню: ";
		}
		cout << endl;

		switch (m)
		{
		case 1:
		{
			int a;
			while (1)
			{
				cout << "Введите значение: ";
				if (scanIntVal(a))
				{
					cout << "\nОшибка. Попробовать еще раз? (Y/N) -->";
					if (scanYesNo())
					{
						continue;
					}
					else
					{
						break;
					}
				}
				addBegin(a, begin, end);
				cout << "Добавить еще значение? (Y/N) -->";
				if (!scanYesNo())
				{
					break;
				}
			}
			break;
		}
		case 2:
		{
			int a;
			while (1)
			{
				cout << "Введите значение: ";
				if (scanIntVal(a))
				{
					cout << "\nОшибка. Попробовать еще раз? (Y/N) -->";
					if (scanYesNo())
					{
						continue;
					}
					else
					{
						break;
					}
				}
				addEnd(a, begin, end);
				cout << "Добавить еще значение? (Y/N) -->";
				if (!scanYesNo())
				{
					break;
				}
			}
			break;
		}
		case 3:
		{
			int n, val;

			while (1)
			{
				cout << "Введите значение, которое нужно добавить: ";
				if (scanIntVal(val))
				{
					cout << "\nОшибка. Попробовать еще раз? (Y/N) -->";
					if (scanYesNo())
					{
						continue;
					}
					else
					{
						break;
					}
				}

				cout << "Введите значение, после которого добавить: ";
				if (scanIntVal(n))
				{
					cout << "\nОшибка. Попробовать еще раз? (Y/N) -->";
					if (scanYesNo())
					{
						continue;
					}
					else
					{
						break;
					}
				}

				if (addAfter(val, n, begin, end))
				{
					cout << endl << endl << "Список пуст или такого элемента в нем нет." << endl << endl;
					cout << "1. Добавить в начало." << endl << endl;
					cout << "2. Добавить в конец." << endl << endl;
					cout << "3. Попробовать еще раз." << endl << endl;
					cout << "0. Ничего не делать." << endl << endl;
					cout << "Выберете пункт меню: ";
					int q;
					while (scanIntVal(q) || (q < 0) || (q > 3))
					{
						cout << "\nОшибка. Попробуйте еще раз.\n\nВыберете пункт меню: ";
					}
					cout << endl;
					switch (q)
					{
					case 1:
					{
						addBegin(val, begin, end);
						break;
					}
					case 2:
					{
						addEnd(val, begin, end);
						break;
					}
					case 3:
					{
						continue;
						break;
					}
					default:
					{

					}
					}
					break;
				}
				else
				{
					break;
				}
			}
			break;
		}
		case 4:
		{
			int n, val;

			while (1)
			{
				cout << "Введите значение, которое нужно добавить: ";
				if (scanIntVal(val))
				{
					cout << "\nОшибка. Попробовать еще раз? (Y/N) -->";
					if (scanYesNo())
					{
						continue;
					}
					else
					{
						break;
					}
				}

				cout << "Введите значение, перед которым добавить: ";
				if (scanIntVal(n))
				{
					cout << "\nОшибка. Попробовать еще раз? (Y/N) -->";
					if (scanYesNo())
					{
						continue;
					}
					else
					{
						break;
					}
				}

				if (addBefore(val, n, begin, end))
				{
					cout << endl << endl << "Список пуст или такого элемента в нем нет." << endl << endl;
					cout << "1. Добавить в начало." << endl << endl;
					cout << "2. Добавить в конец." << endl << endl;
					cout << "3. Попробовать еще раз." << endl << endl;
					cout << "0. Ничего не делать." << endl << endl;
					cout << "Выберете пункт меню: ";
					int q;
					while (scanIntVal(q) || (q < 0) || (q > 3))
					{
						cout << "\nОшибка. Попробуйте еще раз.\n\nВыберете пункт меню: ";
					}
					cout << endl;
					switch (q)
					{
					case 1:
					{
						addBegin(val, begin, end);
						break;
					}
					case 2:
					{
						addEnd(val, begin, end);
						break;
					}
					case 3:
					{
						continue;
						break;
					}
					default:
					{

					}
					}
					break;
				}
				else
				{
					break;
				}
			}
			break;
		}
		case 5:
		{
			if (!begin)
			{
				print(begin);
				system("PAUSE");
				break;
			}

			int a;
			while (1)
			{
				cout << "Введите значение, которое нужно удалить: ";
				if (scanIntVal(a))
				{
					cout << "\nОшибка. Попробовать еще раз? (Y/N) -->";
					if (scanYesNo())
					{
						continue;
					}
					else
					{
						break;
					}
				}
				if (erase(a, begin, end))
				{
					cout << "Такого значение в списке нет. Попробовать еще раз? (Y/N) -->";
					if (scanYesNo())
					{
						continue;
					}
					else
					{
						break;
					}
				}
				cout << "Элемент со значением " << a << " удален." << endl << endl;
				cout << "Удалить еще? (Y/N) -->";
				if (!scanYesNo())
				{
					break;
				}
			}
			break;
		}
		case 6:
		{
			if (!sorting(begin, end))
			{
				cout << "Отсортированный список:" << endl << endl;
				print(begin);
			}
			else
			{
				cout << "Ошибка!! Добавьте больше элементов." << endl << endl;
			}

			system("PAUSE");
			break;
		}
		case 7:
		{
			print(begin);
			system("PAUSE");
			break;
		}
		default:
		{
			while (begin)
			{
				node_list *temp = (*begin).next;
				delete begin;
				begin = temp;
			}
			return 0;
		}
		}
	}
}