Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Динамические структуры - задания и пример.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
82.94 Кб
Скачать

Пример программы на обработку односвязного списка

#include <iostream.h>

#include <stdlib.h>

struct item

{int data;

item *next;

};

//функция добавления элемента x в заданную позицию pos односвязного списка – получился, кажется, лаконичный текст, который прошел все мои тесты.

void add(item *&top, int pos, int x)

{int i; item *pnew, *p=top;

pnew=new item; pnew->data=x;

if (pos<=1||top==NULL) {pnew->next=top; top=pnew;}

else

{ for(i=1;i<pos-1;i++) if (p->next!=NULL) p=p->next;

pnew->next=p->next; p->next=pnew;}

}

// вспомогательная функция для вывода списка

void print(item *top)

{item *p=top;

while (p!=NULL) {cout<<p->data<<' '; p=p->next;}

cout<<endl;

}

main()

{item *top=NULL;

add(top,2,2222);// это ужасный тест – я добавляю элемент во вторую позицию пустого списка (такой позиции нет, но элемент все равно добавляется в начало списка)

for(int i=2; i<=10;i++) add(top,i,i);

//надобавляла элементов в конец списка

print(top);

cin.get();

add(top,1,0);

// добавила элемент в начало непустого списка

print(top);

cin.get();

add(top,12,100);

// теперь в конец

print(top);

cin.get();

add(top,3,300);

// теперь в середину

print(top);

cin.get();

}