Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- struct elements;
- struct elements { // структура элемента
- int inf;
- elements* pe;
- };
- // вставка элемента, head - указатель на голову, place - позиция вставки, value - число, которое нужно вставить
- elements* insert(elements*& head, int place, int value)
- {
- if(head) // если первый элемент уже создан (голова отлична от нуля)
- { // pp - указатель на элемент, после которого вставляем, pc - перед которым, pt - вставляемый элемент
- elements *pp = head, *pc = head, *pt = 0;
- for(int i = 0; i < place; ++i) // пока не нашли позицию
- if(pc) // если текущий элемент есть
- {
- pp = pc; // текущий -> предыдущий
- pc = (*pc).pe; // следующий -> текущий
- }
- else return 0; // иначе вставить не удалось
- pt = new elements; // создаем новый элемент
- (*pt).inf = value; // с нужной инфой
- if(place == 0) head = pt; // если вставляем после головы, указываем ей на новый элемент
- else (*pp).pe = pt; // иначе - указываем предыдущим на него
- (*pt).pe = pc; // указываем вставленным элементом на следущий
- return pt; // ура
- }
- else head = new elements; // ни одного элемента нет! создаем первый, указываем на него головой
- (*head).inf = value; // заполняем инфу
- (*head).pe = 0; // следующего нет.
- }
- // печать списка
- void print(elements* h)
- {
- while(h) // пока элемент существует
- {
- cout << (*h).inf << " "; // вывести его инфу
- h = (*h).pe; // перейти к следующему
- }
- }
- // удаление списка
- void erase(elements* h)
- {
- elements* th; // вспомогательный указатель
- while(h) // пока есть текущий элемент
- {
- th = (*h).pe; // запоминаем следующий элемент
- delete h; // удаляем текущий
- h = th; // переходим к следующему
- }
- }
- int main()
- {
- elements* head = 0;
- insert(head, 0, 100);
- insert(head, 1, 300);
- insert(head, 1, 200);
- insert(head, 3, 400);
- insert(head, 4, 500);
- insert(head, 5, 600);
- print(head);
- erase(head);
- std::cin.sync();
- std::cin.clear();
- std::cin.get();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement