Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- struct list
- {
- int field; // поле данных
- struct list *ptr; // указатель на следующий элемент
- };
- struct list * init(int a) // а- значение первого узла
- {
- struct list *lst;
- // выделение памяти под корень списка
- lst = (struct list*)malloc(sizeof(struct list));
- lst->field = a;
- lst->ptr = NULL; // это последний узел списка
- return(lst);
- }
- struct list * addelem(list *lst, int number)
- {
- struct list *temp, *p;
- temp = (struct list*)malloc(sizeof(list));
- p = lst->ptr; // сохранение указателя на следующий узел
- lst->ptr = temp; // предыдущий узел указывает на создаваемый
- temp->field = number; // сохранение поля данных добавляемого узла
- temp->ptr = p; // созданный узел указывает на следующий элемент
- return(temp);
- }
- struct list * deletelem(list *lst, list *root)
- {
- struct list *temp;
- temp = root;
- while (temp->ptr != lst) // просматриваем список начиная с корня
- { // пока не найдем узел, предшествующий lst
- temp = temp->ptr;
- }
- temp->ptr = lst->ptr; // переставляем указатель
- free(lst); // освобождаем память удаляемого узла
- return(temp);
- }
- struct list * deletehead(list *root)
- {
- struct list *temp;
- temp = root->ptr;
- free(root); // освобождение памяти текущего корня
- return(temp); // новый корень списка
- }
- void listprint(list *lst)
- {
- struct list *p;
- p = lst;
- do {
- printf("%d ", p->field); // вывод значения элемента p
- p = p->ptr; // переход к следующему узлу
- } while (p != NULL);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement