Основы программирования для автоматизированного проектирования и решения творческих задач - 35 стр.

UptoLike

Составители: 

сок и удаление элемента по ключевому значению. Рассмотрим эти действия применительно к однона-
правленному линейному списку.
Поиск элемента осуществляется последовательным перебором элементов списка, начиная с перво-
го, до тех пор, пока нужный элемент не будет обнаружен или не закончатся элементы в списке.
П р и м е р 25
int key;
scanf("%d", &key);
other = first;
while (other != NULL && key != other->key) other = other->next;
Добавление элемента в уже созданный список. Для осуществления этой операции необходимо ус-
тановить в списке место расположения элемента, после которого планируется осуществить вставку но-
вого элемента. После этого создается новая ячейка памяти (отдельно от списка). В поле next данной
ячейки заносим содержимое поля next ячейки из списка, после которой будет осуществлена вставка, а
сама ячейка из списка должна запомнить адрес новой ячейки. После осуществления этих действий но-
вая ячейка окажется встроенной внутрь списка.
П р и м е р 26
int key;
struct lSP *new;
printf("Задайте ключ для вставки…");
scanf("%d", &key);
other = first;
while (other->next != NULL && other->key != key)
other = other->next;
new = (struct lSp *) malloc(sizeof(struct lSp));
new->next = other->next;
other->next = new;
Если новая ячейка должна стать в списке первой, то последовательность действий будет следую-
щей.
П р и м е р 27
new = (struct lSp *) malloc(sizeof(struct lSp));
new->next = first;
first = new;
Удаление из списка заданного элемента. Так же как и при добавлении, процедуры удаления из спи-
ска первого элемента и любого другого будут выполняться по-разному. При удалении первого элемента
необходимо соответствующим образом изменить значение указателя на первый элемент списка, после
чего первый элемент можно удалить.
П р и м е р 28
scanf("%d", &key);
if (key == first->key)
{
other = first;
first = first->next;
free(other);
}