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

Односвязные лнейные списки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ класс Time http://www.cyberforum.ru/cpp-beginners/thread151369.html
у класса Time скрытые переменные - minutes и hours. функция-член должна принять ссылку на оъект Time и... короче, вот код: Time Time::sum(Time & s) { sum.hours=s.hours+hours; sum.minutes=s.minutes+minutes; if (sum.minutes>=60) { sum.hour++; sum.minutes-=60; }
C++ Копирование одной строки в другую циклом for Добрый день! есть программа, в которой пытаюсь скопировать одну строку в другую(без использования strcpy()) : int _tmain(int argc, _TCHAR* argv) { char b; // 1я строка char c; // 2я строка gets(b); // считываю строку b (строка всегда =< 14 символам) for (int i=0;b;i++) {c=b;} http://www.cyberforum.ru/cpp-beginners/thread151360.html
C++ Порязрядные операции в С
В чем разница между операторами ! и ~? Как я понимаю, оба оператора преобразуют единичные биты в нулевые и наоборот, но почему printf("%d", !0) выводит 1, а printf("%d", ~0) выводит -1?
C++ Вызов из потомка конструктор родителя
Как на с++ вызывается конструктор-родителя от конструктора-потомка. На яве так работает: package u; class A{ private int a,b,c; A(){} A(int x1, int y1, int z1){ a = x1; b = y1; c = z1; }
C++ считать из файла http://www.cyberforum.ru/cpp-beginners/thread151347.html
помогите написать функцию которая считает из файла множество цифр и разобьёт по-битам т.е. представит в виде последовательности из 1 и 0 Добавлено через 2 часа 20 минут чтобы последовательность была массивом
C++ Конструкторы и деструкторы функционального объекта Привет всем. Вообщем разбирал задачу, в которой рассматривается алгоритм for_each, я решил добавить отладочный вывод в конструктор и деструктор чтобы посмотреть сколько раз они вызываются и честно говоря результат меня удивил #include <iostream> #include <algorithm> using namespace std; class display{ private: int i; подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
03.07.2010, 20:58     Односвязные лнейные списки
В принципе тут можно и без всяких списков обойтись, ну надо - так надо...
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
typedef struct WRD {
    char * text;
    struct WRD * next;
} wrd_t;
 
wrd_t * new_word(const char * s, wrd_t * last);
wrd_t * words_from_file(const char * file_name);
void print_contains(const wrd_t * list, const char * s);
void delete_words(wrd_t * list);
 
int main(void){
    char buf[BUFSIZ];
    wrd_t * list;
 
    printf("Name of input file: ");
    if ( scanf("%s", buf) != 1 ){
        perror("scanf");
        exit(EXIT_FAILURE);
    }
    if ( ( list = words_from_file(buf) ) == NULL ){
        fprintf(stderr, "Can't get words from file %s\n", buf);
        exit(EXIT_FAILURE);
    }
 
    printf("What to searching for: ");
    if ( scanf("%s", buf) != 1 ){
        perror("scanf");
        delete_words(list);
        exit(EXIT_FAILURE);
    }
    print_contains(list, buf);
 
    delete_words(list);
    exit(EXIT_SUCCESS);
}
 
wrd_t * new_word(const char * s, wrd_t * last){
    wrd_t * w;
    if ( ( w = (wrd_t*)malloc(sizeof(wrd_t)) ) == NULL )
        return NULL;
    if ( ( w->text = strdup(s) ) == NULL ){
        free(w);
        return NULL;
    }
    w->next = NULL;
    if ( last )
        last->next = w;
    return w;
}
 
wrd_t * words_from_file(const char * file_name){
    FILE * f;
    wrd_t * first, * last;
    static char buf[BUFSIZ];
 
    if ( ( f = fopen(file_name, "r") ) == NULL )
        return NULL;
    first = last = NULL;
    while ( fscanf(f, "%s", buf) == 1 ){
        if ( ( last = new_word(buf, last) ) == NULL )
            return NULL;
        if ( ! first )
            first = last;
    }
    fclose(f);
    return first;
}
 
void print_contains(const wrd_t * list, const char * s){
    while ( list ){
        if ( strstr(list->text, s) )
            printf("%s\n", list->text);
        list = list->next;
    }
}
 
void delete_words(wrd_t * list){
    wrd_t * tmp;
    while ( list ){
        tmp = list->next;
        free(list->text);
        free(list);
        list = tmp;
    }
}
 
Текущее время: 11:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru