Удаление элемента в Списке - 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){...

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы