Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdio.h>
- #include <locale.h>
- #include <Windows.h>
- using namespace std;
- struct elm {
- int vl;
- elm *link;
- };
- struct list {
- elm *start, *ptr;
- };
- void moveptr(list *L) {
- if (!L->ptr->link) return;
- L->ptr = L->ptr->link;
- }
- void addelement(list *L, int vl) {
- elm *temp = (elm *)malloc(sizeof(elm));
- if (!temp) return;
- temp->vl = vl;
- temp->link = L->ptr->link;
- L->ptr->link = temp;
- }
- void initl(list *L) {
- L->start = (elm *)malloc(sizeof(elm)); // Create first
- if (!L->start) return;
- L->start->link = NULL;
- L->ptr = L->start;
- }
- void remove_element(list *L) {
- elm *pntr = L->ptr; // След удаляем
- elm *del = L->ptr->link;
- pntr->link = del->link;
- free((void *)del);
- }
- void print(list *L) {
- // дополнительный элемент для прохода от начала до конца списка
- elm *tmp;
- tmp = L->start->link;
- while (tmp != NULL) {
- cout << tmp->vl << " "; // печать текущего элемента
- tmp = tmp->link; // переход на следующий элемент
- }
- cout << endl;
- }
- int main() {
- setlocale(LC_ALL, "rus");
- list *L = (list *)malloc(0);
- initl(L); // Create new list
- int exit = 1, m, vl, num, cc = 0;
- while (exit != 0) {
- system("cls");
- cout << "1.Добавить элемент в начало\n2.Добавить элемент после элемента\n3.Удалить элемент\n4.Вывод списка элементов\n5.Очистить и закрыть\n\n";
- cin >> m;
- switch (m) {
- case 1:
- system("cls");
- L->ptr = L->start;
- cout << "Enter value: ";
- cin >> vl;
- addelement(L, vl);
- cc++;
- break;
- case 2:
- system("cls");
- if (cc == 0) break;
- do {
- cout << "Номер элемента после которого добавить: ";
- cin >> num;
- } while (num < 1 || num > cc);
- for (int i = 0; i < num; i++) moveptr(L);
- cout << "Enter value: ";
- cin >> vl;
- addelement(L, vl);
- cc++;
- break;
- case 3:
- system("cls");
- do {
- cout << "Номер элемента для удаления: ";
- cin >> num;
- } while (num > cc);
- for (int i = 0; i < num - 1; i++) moveptr(L);
- remove_element(L);
- cc--;
- break;
- case 4:
- system("cls");
- print(L);
- cout << "Exit? (1)";
- cin >> vl;
- break;
- case 5:
- free(L->ptr);
- exit = 0;
- break;
- }
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment