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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Sammm
3 / 3 / 1
Регистрация: 21.10.2012
Сообщений: 182
#1

Как глобальную переменную засунуть в структуру? - C++

31.05.2013, 23:41. Просмотров 402. Ответов 8
Метки нет (Все метки)

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
#include<stdio.h>
#include<malloc.h>
#include<string.h>
 
typedef struct Item
{
char *info;
struct Item *next;
}Item;
 
Item *tail;  /*нужно избавиться от глобальной переменной, засунув ее в структуру
               надо сделать что вроде этого
               struct node
               {
                Item *tail;
               };*/
Item *createlist();
void printlist();
Item *deletlist();
 
int main(){
    int k;
    char str[100];
    Item *head;
    head=NULL;
    printf("Vvedite kolichestvo strok:\n");
    scanf("%d",&k);
    printf("Vvedite stroki:\n");
    while(k--){
    scanf("%s",str);
    head=createlist(str,head);
    }
    printf("Otvet\n");
    printlist(head);
    printf("Last element\n");
    printf("%s",tail->info);         //здесь нужно вывести последний элемент
    head=deletlist(head);
    return 0;
}
 
Item *createlist(char str[], Item *head){
    Item *buf,*cur;
    buf = (Item*)malloc(sizeof(Item));
    buf->info = (char*) malloc(strlen(str) + 1);
    strcpy(buf->info, str);
    buf->next = NULL;
    if (head){
        cur = head;
        while(cur->next)cur=cur->next;
        cur->next=buf;
        tail=buf;          //здtсь нужно фиксировать последний элемент
    }
    else head=buf;
    return head;
}
 
void printlist(Item *head){
    while(head)
    {
        printf("%s\n", head->info);
        head=head->next;
    }
}
 
Item *deletlist(Item *head){
    Item *tmp;
    while(head)
   {
        tmp=head->next;
        free(head);
        head=tmp;
    }
    return head;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2013, 23:41     Как глобальную переменную засунуть в структуру?
Посмотрите здесь:

Немогу объявить глобальную переменную C++
почему глобальную переменную не видно, хотя она объяылена? C++
C++ Как обьявить глобальную переменную в функции?
C++ Где хранить глобальную переменную для всех представлений?
C++ Как и где описать глобальную переменную?
C++ Как объявить глобальную переменную в Dev-C++ 4.9.9.2?
C++ Как обьявить глобальную переменную
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
1888 / 1743 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
31.05.2013, 23:48     Как глобальную переменную засунуть в структуру? #2
Зачем? Структура это пользовательский тип данных, а переменная - это переменная.
Нельзя просто так переменную "сделать полем структуры". Это разные сущности и используются по разному.

Повторяю вопрос: зачем?
castaway
Эксперт С++
4873 / 3012 / 370
Регистрация: 10.11.2010
Сообщений: 11,062
Записей в блоге: 10
Завершенные тесты: 1
31.05.2013, 23:51     Как глобальную переменную засунуть в структуру? #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct node_t {
    int data;
    node_t *next;
};
 
struct list_t {
    node_t *head;
    node_t *tail;
 
    void append( int value ) {
        ...
    }
 
    ...
};
ITcrusader
31.05.2013, 23:56
  #4

Не по теме:

Цитата Сообщение от lazybiz Посмотреть сообщение
Чем меньше знаете вы, тем ценнее я как разработчик.
хахах

Sammm
3 / 3 / 1
Регистрация: 21.10.2012
Сообщений: 182
01.06.2013, 00:30  [ТС]     Как глобальную переменную засунуть в структуру? #5
Kuzia domovenok, а какой вы можете предложить способ избавиться от глобальной переменной?
MrGluck
Ворчун
Эксперт CЭксперт С++
6462 / 3660 / 459
Регистрация: 29.11.2010
Сообщений: 9,650
01.06.2013, 01:08     Как глобальную переменную засунуть в структуру? #6
Sammm, сделать её локальной (ваш кэп)
Засунуть её в main, при необходимости передавать в функции в качестве аргумента.
rangerx
1923 / 1532 / 139
Регистрация: 31.05.2009
Сообщений: 2,896
01.06.2013, 01:17     Как глобальную переменную засунуть в структуру? #7
Цитата Сообщение от Sammm Посмотреть сообщение
а какой вы можете предложить способ избавиться от глобальной переменной?
Заведите ещё один тип, который будет представлять непосредственно сам список и поместите туда как Item *tail, так и Item *head. Функции работы со списком, естественно, придётся немного переделать.

Добавлено через 5 минут
Ага, выше уже предложили такой вариант. Не обратил внимания
Sammm
3 / 3 / 1
Регистрация: 21.10.2012
Сообщений: 182
01.06.2013, 01:32  [ТС]     Как глобальную переменную засунуть в структуру? #8
rangerx, Скажите, если ввести две структуры
C++
1
2
3
4
5
6
7
8
9
10
11
typedef struct Item
{
char *info;
struct Item *next;
}Item;
 
typedef struct list
{
struct Item *head;
struct Item *tail;
}list;
Как в нужный момент зафиксировать, например, конец списка, если раньше было так:
C++
1
tail=buf;
А вывод был такой:
C++
1
printf("%s",tail->info);
Как осуществить те же операции, если tail теперь в структуре?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2013, 09:12     Как глобальную переменную засунуть в структуру?
Еще ссылки по теме:

Можете подсказать,как правильно описать глобальную переменную C++
Как инициализировать глобальную переменную в зависимости от количества строк в файле C++
Как создать глобальную переменную? C++
Как сделать одну глобальную переменную C++
C++ Как правильно создать глобальную переменную?

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

Или воспользуйтесь поиском по форуму:
castaway
Эксперт С++
4873 / 3012 / 370
Регистрация: 10.11.2010
Сообщений: 11,062
Записей в блоге: 10
Завершенные тесты: 1
01.06.2013, 09:12     Как глобальную переменную засунуть в структуру? #9
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
#include <iostream>
 
using namespace std;
 
struct node_t {
    int         m_data;
    node_t *    m_next;
 
    node_t( int data ) : m_data( data ) {}
};
 
struct list_t {
    node_t *    m_head;
    node_t *    m_tail;
 
    list_t() : m_head(0), m_tail(0) {}
 
    void append( int data ) {
        node_t * p_node = new node_t( data );
        p_node->m_next = 0;
        if ( !m_head ) {
            m_head = m_tail = p_node;
        } else {
            m_tail->m_next = p_node;
            m_tail = m_tail->m_next;
        }
    }
};
 
int main()
{
    list_t  my_list;
 
    for ( int i = 0; i < 10; i++ ) {
        my_list.append( i );
    }
 
    for ( node_t *p_node = my_list.m_head; p_node; p_node = p_node->m_next ) {
        cout << p_node->m_data << endl;
    }
 
    return 0;
}
Yandex
Объявления
01.06.2013, 09:12     Как глобальную переменную засунуть в структуру?
Ответ Создать тему
Опции темы

Текущее время: 10:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru