Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <locale.h> //setlocale
- typedef struct
- {
- int field; // поле данных
- struct list *ptr; //указатель на следующий элемент
- }List;
- List * init(int a) //a - знач-е первого узла, ф-я наз-я 1го узла списка
- {
- List *lst; //выделение памяти под корень списка
- lst = (List*)malloc(sizeof(List));
- lst->field = a;
- lst->ptr = NULL; //последний узел списка
- return(lst);
- }
- List * addElem(List *lst, int number)
- {
- List *temp, *p;
- temp = (List*)malloc(sizeof(List));
- p = lst->ptr; // сохранение указателя на следующий узел
- lst->ptr = temp; // предыдущий узел указывает на создаваемый
- temp->field = number; // сохранение поля данных добавляемого узла
- temp->ptr = p; // созданный узел указывает на следующий элемент
- return(temp);
- }
- void insertElem(List* beforeItem, int number)
- {
- List *temp, *nnew;
- temp = beforeItem->ptr;
- nnew = (List*)malloc(sizeof(List));
- nnew->field = number;
- nnew->ptr = temp;
- beforeItem->ptr = nnew;
- }
- List * deleteElem(List *lst, List *root)
- {
- List *temp;
- temp = root;
- while (temp->ptr != lst)
- {
- temp = temp->ptr;
- }
- temp->ptr = lst->ptr;
- free(lst); //возвращает память, на которую указывает параметр ptr, назад в кучу.
- return(temp);
- }
- void showList(List *lst)
- {
- List *p;
- p = lst;
- do {
- printf("%d ", p->field);
- p = p->ptr;
- } while (p != NULL);
- }
- List* searchItem(List* lst, int item)
- {
- List* p = lst;
- int z = 0;
- do { z++;
- if(p->field == item)
- {
- printf("Номер элемента в списке = %u", z);
- return p;
- }
- p = p->ptr;
- } while (p != NULL);
- return NULL;
- }
- void searchInsertElem(List * head, int beforeNumber, int number)
- {
- List *temp, *nnew, *beforeItem;
- beforeItem = searchItem(head, beforeNumber);
- if (beforeItem == NULL)
- {
- printf("\n\nWARNING! Элемента %d в списке нет!\n", beforeNumber);
- return;
- }
- temp = beforeItem->ptr;
- nnew = (List*)malloc(sizeof(List));
- nnew->field = number;
- nnew->ptr = temp;
- beforeItem->ptr = nnew;
- }
- int main()
- {
- setlocale(LC_ALL, "Rus");
- system("color F0");
- //printf("Привет Мир\n");
- List newList = *(init(0));
- //printf("%d\n", newList.field);
- List * p , *head, *deleting;
- p = init(8);
- head = p; // для instertElem
- p = addElem(p, 4);
- p = addElem(p, 6);
- deleting = p;
- p = addElem(p, 2);
- //deleting = p;
- printf("Дано: ");
- showList(head);
- deleteElem(deleting, head); // удаляем 118 строка
- printf("\nПосле удаления: ");
- showList(head);
- printf("\nПосле вставки: ");
- insertElem(head, 13);
- showList(head);
- printf("\n%d" ,(searchItem(head, 13))->field);
- searchInsertElem(head, 55, 44);
- printf("\nВставка после указанного числа: ");
- showList(head);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement