Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:2K_programuvanna / Практика / 3_mod / mod3 / 15
.c#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
typedef struct st { // элемент
int info; // элемент хранения
struct st *prev; // указатель на следующий элемент
} ELEMENT;
void add(ELEMENT **head, int item); // поместить item в
ELEMENT * find(ELEMENT *head, int item);
void print_list(ELEMENT *head);
void lremove(ELEMENT **element, int item);
void clear(ELEMENT **head);
int main(){
ELEMENT *head = NULL;
int i,value;
clrscr();
for (i = 0; i< 4; i++){
printf("Vvedite element %d:", i);
scanf("%d",&value);
add(&head,value);
}
printf("%d",find(head,9)->info);
puts("");
lremove(&head,9);
print_list(head);
clear(&head);
return 0;
}
void add(ELEMENT **head, int item){ // поместить item в список
ELEMENT * new_item;
new_item = (ELEMENT *) malloc( sizeof (ELEMENT) ); //выделяем память под новый элемент
new_item -> info = item; // присваиваем значение новому элементу
new_item -> prev = *head; // присоединяем новый элемент на вершину
*head = new_item;
}
ELEMENT * find(ELEMENT *head, int item){
while (head){
if (head -> info == item){
return head;
}
head = head->prev;
}
return NULL;
}
void print_list(ELEMENT *head){
while (head){
printf("%d ",head->info);
head = head->prev;
}
}
void lremove(ELEMENT **head, int item){
ELEMENT *tmp = NULL, *element = *head;
while (element){
if (element -> info == item){
break;
}
tmp = element;
element = element->prev;
}
if (element){
if (tmp){
tmp ->prev = element->prev;
free(element);
} else {
tmp = *head;
*head = (*head) ->prev;
free(tmp);
}
}
}
void clear(ELEMENT **head){
ELEMENT *element;
while (*head){
element = *head;
*head = (*head)-> prev;
free(element);
}
}