1 / 1 / 0
Регистрация: 19.02.2012
Сообщений: 31

Связный список, удаление

11.04.2012, 18:49. Показов 1008. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
написал программу работы со списком...
проблема в удалении элемента по его имени(в процедуре удаления remove подключается процедура поиска find)
но почему-то не работает поиск элемента... кажется ошибка где-то в find...
пожалуйста помогите...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
 
#define dlina 9  // макс.длина идентификаторара  (строки символов с признаком конца '\0' )       
struct SP                   // тип элемента списка  
{
    char  id [dlina];          // идентификатор   
    struct SP *next;        // ссылка на следующий элемент 
};
 
void  add(struct SP **p, char id[])
{
    struct SP  *pt,           
                  *k,*j;               
    pt = (struct SP*) malloc(sizeof(struct SP));            
    strcpy(pt->id, id); 
    if (*p==NULL || strcmp(pt->id,(*p)->id) < 0) 
    {
       pt->next=*p; *p=pt; 
    }
    else 
    { 
        k=*p; 
        while (k!=NULL && strcmp(pt->id,k->id)>=0) 
        {  
            j=k;  k=k->next;
        }
        j->next=pt; pt->next=k;  
    } 
} 
 
SP* find(SP* pv, char* id, SP** prev)
{
    *prev = 0;
    while (pv)
    {
        if (strstr(pv->id, id))
            if (pv->id[strlen(id)] == ' ')
                                          return pv;        
        *prev = pv;
        pv = pv->next;      
    }
    puts("There is no idintificator\n");
    return 0;
}
 
void get_name(char* id)
{
    puts("Enter id name = ");
    gets(id);
}
 
SP* remove(SP* p)
{
    char id [dlina];
    get_name(id);
    SP* prev;
    SP* pv = find(p, id, &prev);
    if (pv)
    {
        if (pv == p)
            p = p->next;
        else
            prev->next = pv->next;
        delete pv;
    }
    return p;
}
 
void print(SP* p)
{
    SP* pv = p;
    while (pv)
    {
        printf(pv->id,'\n');
        pv = pv->next;
    }
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    struct SP  *p; 
    unsigned  n;    
    unsigned  i;                
    char id[dlina];     
 
    printf ("\nEnter the number of identifiers\nn = "); 
    scanf ("%u",&n); 
    getchar();         
    p=NULL;    
    printf("Enter identifiers' names \n"); 
    printf("After each name press <Enter>\n"); 
    for ( i=1; i<=n; i++ )
    {  
        gets (id); 
        add(&p,id);  
    }        
    printf ("\To complete press any key \n"); 
    p=remove(p);
    getch(); 
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.04.2012, 18:49
Ответы с готовыми решениями:

Связный список (Используя структуру описания даты, построить связный список студентов, сформированный в алфавитном порядке)
Здраствуйте! Помогите пожалуйста найти косяк. Выводится только первая строчка из списка студентов. Вот такая задачка : Программа...

Связный список; удаление равных максимальному элементов
считать числа в связный список, найти макс. элемент, удалить из списка все элементы, равные максимальному. #include &lt;iostream&gt; ...

Список: связный список, в котором информация о книгах сортируется по убыванию стоимости.
Друзья помогите с реализацией списка. Нужно запрограммировать связный список, в котором информация о книгах сортируется по убыванию...

2
 Аватар для Schizorb
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
11.04.2012, 19:39
Я бы в поиске сделал сравнение строк:

C++
1
2
if(strcmp(pv->id, id) == 0)
    return pv;
Или тебе нужно сделать поиск по подстроке с помощью strstr? Не вникал особо в код, но не понял, зачем вот эта строка:
C++
1
if (pv->id[strlen(id)] == ' ')
1
1 / 1 / 0
Регистрация: 19.02.2012
Сообщений: 31
11.04.2012, 19:52  [ТС]
ооо спасибо)))
работает)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.04.2012, 19:52
Помогаю со студенческими работами здесь

Написать программу, реализующую связный список с информацией о студентах и отображающую список в порядке убывания возраста студента
Написать программу, реализующую связный список с информацией о студентах и отображающую список в порядке убывания возраста студента

Связанный список. Создать, записать в связный список последовательность слов,обозначающих месяцы года,заданных пользователем
Создать связанный список.Кроме информационных полей он должен обязательно содержать указатели на предыдущий и следующий за ним...

Связный список
Создать связанный список целых чисел, расположенных по возрастанию. Включить в список три числа, не нарушая упорядоченности. +ввод +вывод...

Связный список
Здравствуйте. Подскажите информацию насчет связных списков. Книгу, или сайтик.

Связный список
Не получается нормально скомпоновать файлы :( Сделал связный список использую шаблоны класса. Файл ListSpisok.h и есть сам связный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Введение в Q# - язык квантовых вычислений от Microsoft
EggHead 19.05.2025
Microsoft вошла в гонку технологических гигантов с собственным языком программирования Q#, специально созданным для разработки квантовых алгоритмов. Но прежде чем погружаться в синтаксические дебри. . .
Безопасность Kubernetes с Falco и обнаружение вторжений
Mr. Docker 18.05.2025
Переход организаций к микросервисной архитектуре и контейнерным технологиям сопровождается лавинообразным ростом векторов атак — от тривиальных попыток взлома до многоступенчатых кибератак, способных. . .
Аугментация изображений с Python
AI_Generated 18.05.2025
Собрать достаточно большой датасет для обучения нейронной сети — та ещё головная боль. Часами вручную размечать картинки, скармливать их ненасытным алгоритмам и молиться, чтобы модель не сдулась при. . .
Исключения в Java: советы, примеры кода и многое другое
Javaican 18.05.2025
Исключения — это объекты, созданные когда программа сталкивается с непредвиденной ситуацией: файл не найден, сетевое соединение разорвано, деление на ноль. . . Список можно продолжать до бесконечности. . . .
Как сделать SSO (Single Sign-On) в C# приложении
stackOverflow 18.05.2025
SSO — это механизм, позволяющий пользователю пройти аутентификацию один раз и получить доступ к нескольким приложениям без повторного ввода учетных данных. Вы наверняка сталкивались с ним, когда. . .
Kubernetes с Apache Flink для обработки данных в реальном времени
Mr. Docker 17.05.2025
Kubernetes — это целая философия управления распределёнными приложениями. В отличие от "примитивных" решений вроде Docker Swarm, K8s (как его ласково называют в тусовке DevOps-инженеров) предлагает. . .
Использование декораторов в Python
py-thonny 17.05.2025
Если вы когда-нибудь задумывались о том, как красиво расширить функциональность кода без лишней возни и дублирования, декораторы в Python — та самая волшебная палочка, которую вы искали. По сути, это. . .
Реализация многопоточных сетевых серверов на Python
py-thonny 16.05.2025
Когда сталкиваешься с необходимостью писать высоконагруженные сетевые сервисы, выбор технологии имеет критическое значение. Python, со своей элегантностью и высоким уровнем абстракции, может. . .
C# и IoT: разработка Edge приложений с .NET и Azure IoT
UnmanagedCoder 16.05.2025
Мир меняется прямо на наших глазах, и интернет вещей (IoT) — один из главных катализаторов этих перемен. Если всего десять лет назад концепция "умных" устройств вызывала скептические улыбки, то. . .
Гибридные квантово-классические вычисления: Примеры оптимизации
EggHead 16.05.2025
Гибридные квантово-классические вычисления — это настоящий прорыв в подходах к решению сложнейших вычислительных задач. Представьте себе союз двух разных миров: классические компьютеры, с их. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru