Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ очень нужна помощ по С++ http://www.cyberforum.ru/cpp-beginners/thread545354.html
В файле содержится шнформация о книгах библиотеки: номер УДК, фамилия и инициалы автора, название, год издания, количество экземпляров данной книги в библиотеци.Написаты программу, которая бы обеспечивала: а) Исходное формулировки данных о все книги в библиотеке в виде книги, бы ) при ввидачи каждой книги вводится № УДК и программа уменьшает значение количества книг на единицу или кажещо книги...
C++ расстояние от точки до функции С++ у меня было задание такое: Определить минимальное расстояние функции f(x)=15logx-x от точки А(Xa,Ya) на интервале x=Xmin:h:Xmax...мой код: #include "stdafx.h" #include <math.h> #include <iostream> #include <conio.h> using namespace std; int main () { http://www.cyberforum.ru/cpp-beginners/thread545350.html
code composer studio 5 visual linker C++
Сори, если не сюда эта тема относится, но ничего более подходящего не нашел Как мне включить visual linker в ccs 5 если кто работал?
виртуальные функции.... C++
как отсортировать площадь "area()" в порядке возрастания. кто знает напишите.... #include <iostream> #include <clocale> using namespace std; //--------------------------------------------------------------
C++ Рекурсивные алгоритмы обработки структур данных http://www.cyberforum.ru/cpp-beginners/thread545327.html
Разработать программы по алгоритму с использованием рекурсивной функции и без использования рекурсивной функции. Оценить время выполнения и сложность алгоритма.
C++ Возведение числа в большую степень (например 3^100) Программа для возведения числа в большую степень. Так как число очень большой длинны не помещается ни в один стандартный тип, то для его хранения использовать ДИНАМИЧЕСКИЙ массив. Помогите пожалуйста. (Х^K) Я возведения в К-ую степень, я просто умножаю чилсо само на себя К раз. Но не могу понять как реализовать цикл для очередного перемножения полученного ранее числа на Х.(не знаю какую... подробнее

Показать сообщение отдельно
diaryofsummer
1 / 1 / 0
Регистрация: 19.02.2012
Сообщений: 31

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

11.04.2012, 18:49. Просмотров 833. Ответов 2
Метки (Все метки)

написал программу работы со списком...
проблема в удалении элемента по его имени(в процедуре удаления 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;
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru