Удаление элемента в Списке - C (СИ) (77605)
Формулировка задачи:
В чём ошибка функции удаления элемента.
#include <stdio.h> #include <stdlib.h> typedef struct{ char name[20]; int unn; char fio[20]; char date[9]; }info_list; typedef struct list_elem{ info_list info; struct list_elem *next; }list_elem; typedef struct{ int size; list_elem *head; }LIST; LIST *Initial_list(void) { LIST *ls = (LIST*) malloc(sizeof(LIST)); ls->head = NULL; return ls; } list_elem *Initial_list_elem(void) { list_elem *elem = (list_elem*) malloc(sizeof(list_elem)); elem->next = 0; return elem; } int Add(LIST *ls, info_list info) { list_elem *elem = Initial_list_elem(); elem->info = info; elem->next = ls->head; ls->head = elem; ls->size++; return 1; } void Print(LIST *ls) { list_elem *elem; int i=0; for(elem = ls->head; elem != NULL; elem = elem->next){ i++; printf("%s %d %s %s", elem->info.name, elem->info.unn, elem->info.fio, elem->info.date); } } int Del(LIST *ls, int index) { list_elem *elem; int i = 0; if((index<0)||(index>=ls->size)) return 0; for(elem = ls->head; i != index; elem = elem->next) i++; free(elem); return 1; } int main(int argc, char *argv[]) { info_list info; int n = 0; LIST *ls = Initial_list(); char s[3]; do{ printf("Name firm: \n"); gets(info.name); printf("Number UNN: \n"); gets(s); info.unn = atoi(s); printf("F.I.O: \n"); gets(info.fio); printf("Date: \n"); gets(info.date); Add(ls, info); n--; }while(strcmp(info.name, "")); Print(ls); printf("Введите номер записи которую нужно удалить: "); scanf("%d", &n); Del(ls, n); Print(ls); return 0; }
Решение задачи: «Удаление элемента в Списке»
textual
Листинг программы
for(elem = ls->head; i != ls->size-1; elem = elem->next){ ++i; if(++i == index){...
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д