Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
28
Добавлен:
19.04.2015
Размер:
2.06 Кб
Скачать
#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);
  }
}

Соседние файлы в папке mod3