Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[С++] Структуры

9.8K
16 января 2007 года
FISH.ka
35 / / 07.01.2007
Получила странное задание...не могу в нем разобраться. Используя стркутуры, написать программу организации связного списка по следующему признаку: если введённый символ буква, то в конце списка добавляется узел, который содержит символ, иначе узел добавляется в начало списка и содержит цифру.
622
16 января 2007 года
nilbog
507 / / 19.12.2006
реализуйте добавления элементов в начало или конец списка
если проблема в этом то используйте поиск
много чего найдете :) - обсуждалось это не раз на форуме
9.8K
16 января 2007 года
FISH.ka
35 / / 07.01.2007
понятненько, ща тогда полистаем странички
242
16 января 2007 года
Оlga
2.2K / / 04.02.2006
http://forum.codenet.ru/search.php
1.9K
17 января 2007 года
[*]Frosty
278 / / 17.06.2006
Я бы используя структуры так сделал. Мне кажеться препод проверяет не только знание структур, но и например использование union) и enum. жаль классов нет(
Код:
//---------------------------------------------------------------------------
[COLOR="SeaGreen"]#pragma hdrstop

#include <iostream>[/COLOR]

using namespace std;
//---------------------------------------------------------------------------
enum ETypeData {NUMBER, CHAR};

//---------------------------------------------------------------------------
struct SNode
{
        SNode *next;
        union
        {
                int num;
                char ch;
        } data;
        ETypeData type;
};

//---------------------------------------------------------------------------
struct SList
{
        SNode *head;
        SNode *tail;
};

void InitList(SList &list);
void ListAddToHead(SList &list, int i);
void ListAddToTail(SList &list, char c);
void ListAdd(SList &list, char c);
bool ListIsEmpty(SList &list);
void ListDelete(SList &list);
void ListPrint(SList &list);

//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
        SList l;
        InitList(l);

        char c;
        cout << "Input list: " << endl;
        cout << "q - quit" << endl;
        cin >> c;
        while(c != 'q')
        {
                ListAdd(l, c);
                cin >> c;
        }

        ListPrint(l);

        ListDelete(l);

        cin >> c;

        return 0;
}
//---------------------------------------------------------------------------
void InitList(SList &list)
{
        list.head = NULL;
        list.tail = NULL;
}
//---------------------------------------------------------------------------
void ListAddToHead(SList &list, int i)
{
        SNode * NewNode = new SNode;
        NewNode->data.num = i;
        NewNode->type = NUMBER;

        NewNode->next = list.head;
        list.head = NewNode;

        if(list.tail == NULL)
                list.tail = NewNode;
}
//---------------------------------------------------------------------------
void ListAddToTail(SList &list, char c)
{
        SNode * NewNode = new SNode;
        NewNode->data.ch = c;
        NewNode->type = CHAR;
        NewNode->next = NULL;

        if(list.tail != NULL)
                list.tail->next = NewNode;
        list.tail = NewNode;

        if(list.head == NULL)
                list.head = NewNode;
}
//---------------------------------------------------------------------------
void ListAdd(SList &list, char c)
{
        if(isdigit(c))
        {
                // Переводим код символа в число
                int i = c - '0';
                ListAddToHead(list, i);
        }
        else
        {
                ListAddToTail(list, c);
        }
}
//---------------------------------------------------------------------------
bool ListIsEmpty(SList &list)
{
        return !list.head;
}
//---------------------------------------------------------------------------
void ListDelete(SList &list)
{
        while(!ListIsEmpty(list))
        {
                SNode *n = list.head;
                list.head = list.head->next;

                if(list.head == NULL)
                        list.tail = NULL;

                delete n;
        }
}
//---------------------------------------------------------------------------
void ListPrint(SList &list)
{
        SNode *node = list.head;

        cout << endl << "List:" << endl;

        if(node == NULL)
                cout << "List is empty." << endl;

        while(node != NULL)
        {
                if(node->type == NUMBER)
                        cout << "NUMBER: " << node->data.num << endl;

                if(node->type == CHAR)
                        cout << "CHAR: " << node->data.ch << endl;

                node = node->next;
        }
}
//---------------------------------------------------------------------------
9.8K
17 января 2007 года
FISH.ka
35 / / 07.01.2007
:eek: Ого, спасибки, я тут тоже нашла много полезного в предыдущих темах, на форуме! Мне "поиск" столько выдал! Только у меня вопрос что
это означает?
 
Код:
#pragma hdrstop//???????


union я знаю что, а вот enum, чет не рассказывали и никогда не слышала
 
Код:
enum ETypeData {NUMBER, CHAR};//?????


 
Код:
#pragma argsused//?????


 
Код:
(int argc, char* argv[])//????
547
18 января 2007 года
Hydra
488 / / 20.06.2006
#pragma hdrstop // конец области предкомпилированных хедеров
enum - перечисляемый тип
#pragma argused // директива компилятора показывающая, что программе будут переданы параметры
(int argc, char* argv[]) // собственно параметры командной строки
9.8K
18 января 2007 года
FISH.ka
35 / / 07.01.2007
Спасибо!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог