Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <locale>
- using namespace std;
- //Создать по типу очередь.
- //Тип информационного поля char*.
- //Добавить в список элементы с номерами 1, 3, 5 и т.д.
- struct point{
- char* data = new char[10];
- point* next;
- };
- void print_list(point* beg)
- //печать списка
- {
- point* p = beg;//начало списка
- while (p != 0)
- {
- cout << p->data << "\t";
- p = p->next;//переход к следующему элементу
- }
- }
- point* make_list(int n)
- {
- point*beg;//указатель на первый элемент
- point*p, *r;//вспомогательные указатели
- beg = new(point);//выделяем память под первый элемент
- cout << "String : " << endl;
- cin >> beg->data;//вводим значение информационного поля
- beg->next = 0;//обнуляем адресное поле
- //ставим на этот элемент указатель p (последний элемент)
- p = beg;
- for (int i = 0; i<n - 1; i++)
- {
- r = new(point);//создаем новый элемент
- cout << "String : " << endl;
- cin >> r->data;
- r->next = 0;
- p->next = r;//связываем p и r
- //ставим на r указатель p (последний элемент)
- p = r;
- }
- return beg;//возвращаем beg как результат функции
- }
- point* del_point(point*beg, int k)
- //удаление элемента с номером k из списка
- {
- point*p = beg;
- if (k == 0)//удаление первого элемента
- {
- beg = beg->next;
- delete p;
- return beg;
- }
- //проходим по списку до элемента с номером k-1
- for (int i = 1; i<k&&p->next != 0; i++)
- p = p->next;
- /*если такого элемента в списке нет, то возвращаем указатель на начало списка в качестве результата функции*/
- if (p->next == 0) return beg;
- point* r = p->next;//ставим указатель r на k-й элемент
- p->next = r->next;//связываем k-1 и k+1 элемент
- delete r;//удаляем k-й элемент из памяти
- return beg;
- }
- void main(){
- setlocale(LC_ALL, "rus");
- point* beg;
- int n;
- cout << "Count ?" << endl;
- cin >> n;
- beg = make_list(n);
- print_list(beg);
- point* p = beg;
- for (int i = 1; i < n/2+1 && p->next != NULL;i++){
- p = p->next;
- beg = del_point(beg,i);
- }
- cout << endl;
- cout << "Список после обработки" << endl;
- print_list(beg);
- cout << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment