3 / 3 / 5
Регистрация: 21.10.2012
Сообщений: 182
1

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

31.05.2013, 23:41. Показов 1139. Ответов 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;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.05.2013, 23:41
Ответы с готовыми решениями:

Запись в глобальную структуру/переменную конструктор класса
Всем привет, пытаюсь реализовать следующую задачу. Есть класс с констуктором и функцией, типа: ...

Как создать глобальную структуру?
В Unit1 создал структуру: struct baza { String name; int n; float price;...

Как задать глобальную переменную?
Как задать глобальную переменную которая будет работать на всех формах проги? Заранее спасибо.

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

8
3815 / 3121 / 867
Регистрация: 25.03.2012
Сообщений: 11,535
Записей в блоге: 1
31.05.2013, 23:48 2
Зачем? Структура это пользовательский тип данных, а переменная - это переменная.
Нельзя просто так переменную "сделать полем структуры". Это разные сущности и используются по разному.

Повторяю вопрос: зачем?
1
Эксперт С++
4978 / 3085 / 456
Регистрация: 10.11.2010
Сообщений: 11,164
Записей в блоге: 10
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 ) {
        ...
    }
 
    ...
};
1
ITcrusader
31.05.2013, 23:56
  #4

Не по теме:

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

1
3 / 3 / 5
Регистрация: 21.10.2012
Сообщений: 182
01.06.2013, 00:30  [ТС] 5
Kuzia domovenok, а какой вы можете предложить способ избавиться от глобальной переменной?
0
Форумчанин
Эксперт CЭксперт С++
8191 / 5041 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
01.06.2013, 01:08 6
Sammm, сделать её локальной (ваш кэп)
Засунуть её в main, при необходимости передавать в функции в качестве аргумента.
1
2017 / 1616 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
01.06.2013, 01:17 7
Цитата Сообщение от Sammm Посмотреть сообщение
а какой вы можете предложить способ избавиться от глобальной переменной?
Заведите ещё один тип, который будет представлять непосредственно сам список и поместите туда как Item *tail, так и Item *head. Функции работы со списком, естественно, придётся немного переделать.

Добавлено через 5 минут
Ага, выше уже предложили такой вариант. Не обратил внимания
1
3 / 3 / 5
Регистрация: 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 теперь в структуре?
0
Эксперт С++
4978 / 3085 / 456
Регистрация: 10.11.2010
Сообщений: 11,164
Записей в блоге: 10
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;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.06.2013, 09:12
Помогаю со студенческими работами здесь

Как объявить глобальную переменную?
подскажите люди добрые, как объявить(а точнее где?) в form2 (которая вызывается из form1)...

Как создать глобальную переменную?
Создаю небольшой проект. Несколько функций и собственно тело программы. В теле объявил переменную...

Как создать глобальную переменную
Как сделать переменную которая будет роботать везде. Везде- в 1 форме и во всех других в данном...

Как объявить глобальную переменную
Собственно вопрос может показаться глупым, но я прочитал много статей и так и не нешёл ответ.


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru