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

Динамические списки - C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
Wolandello
1 / 1 / 0
Регистрация: 06.06.2009
Сообщений: 35
26.09.2009, 21:55     Динамические списки #1
Всем привет. Подскажите пожалуста идеи. Дано стек, разработать функцию, которая формирует два новых стеки: первая содержит числа из исходного стека с нечетными номерами, а второе - с четными
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2009, 21:55     Динамические списки
Посмотрите здесь:

C++ Динамические массивы
Динамические Массивы C++
Динамические Списки!!!! Очень нужно...! C++
C++ Динамические массивы
Динамические списки C++
Динамические структуры (линейные списки): Run-Time Check Failure #2 - Stack around the variable ... was corrupted. C++
C++ динамические массивы
Динамические массивы. C++
Динамические матрицы C++
C++ Иерархия объектов и динамические списки внутри класса
Динамические (или не динамические.) переменные! C++
Динамические списки, жуть C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sekt
 Аватар для Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
26.09.2009, 22:10     Динамические списки #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void function(*stack)
{
int *stack1=new int[100];
int *stack2=new int [100];
int counter1=counter2=0;
while(stack<stack.size())// тут малек не корректно ;)
{
if(stack%2)
stack1[counter]=stack;
counter1++;
else
stack2[counter2]=stack;
counter2++;
}
for(....i<counter1)
{
//
}
for(.... i<counter2)
{
//
}
}
В циклах можете делать вывод на экран или что хотите.
*stack может быть и через & и как угодно.
Lorr
 Аватар для Lorr
0 / 0 / 0
Регистрация: 21.04.2009
Сообщений: 21
11.10.2009, 20:13     Динамические списки #3
Код
#include <cstdlib>
#include <iostream>
#include <string>

using namespace std;

enum {kIsSmaller, kIsLarger, kIsSame};

class Data
{
    public:
        Data(int val):myValue(val){}
        ~Data(){}
        int Compare(const Data &);
        void Show() {cout << myValue << endl;}
    private:
        int myValue;
};
int Data::Compare(const Data & theOtherData)
{
    if(myValue < theOtherData.myValue) return kIsSmaller;
    if(myValue > theOtherData.myValue) return kIsLarger;
    else return kIsSame;
}

class Node;
class HeadNode;
class TailNode;
class InternalNode;

class Node
{
    public:
        Node() {}
        virtual ~Node(){}
        virtual Node * Insert(Data * theData)=0;
        virtual void Show()=0;
};

class InternalNode: public Node
{
   public:
         InternalNode(Data * theDat, Node * next);
         ~InternalNode() { delete myNext; delete myData;}
         virtual Node * Insert(Data * theData);
         virtual void Show() {myData->Show(); myNext->Show();}
   private:
         Data * myData;
         Node * myNext;
};                
    
InternalNode::InternalNode(Data * theData, Node * next):
    myData(theData), myNext(next) {}
    
    Node * InternalNode::Insert(Data * theData)
    {
        int result = myData->Compare(*theData);
        
        switch(result)
        {
            case kIsSame:
            case kIsLarger:
            {
                InternalNode * dataNode = new InternalNode(theData, this);
                return dataNode;
            }
            case kIsSmaller:
                myNext=myNext->Insert(theData);
                return this;
            }
            return this;
        }
        
class TailNode: public Node
{
    public:
        TailNode(){}
       ~TailNode(){}
        virtual Node * Insert(Data * theData);
        virtual void Show() {}
};

Node * TailNode::Insert(Data* theData)
{
    InternalNode * dataNode = new InternalNode(theData, this);
    return dataNode;
}

class HeadNode: public Node
{
    public:
        HeadNode();
        ~HeadNode(){delete myNext;}
        virtual Node * Insert(Data * theData);
        virtual void Show() {myNext->Show();}
    private:
        Node * myNext;
};

HeadNode::HeadNode()
{ 
    myNext=new TailNode();
}

Node * HeadNode::Insert(Data * theData)
{
    myNext=myNext->Insert(theData);
    return this;
}

class LinkedList
{
    public:
        LinkedList();
        ~LinkedList(){delete myHead;}
        void Insert(Data * theData);
        void ShowAll() {myHead->Show();}
    private:
        HeadNode * myHead;
};

LinkedList::LinkedList()
{
    myHead = new HeadNode;
}

void LinkedList::Insert(Data * pData)
{
    myHead->Insert(pData);
}

           
    
int main()
{
    Data * pData;
    int val;
    LinkedList ll;
    
    for(;;)
    {
        cout << "What value? (0 to stop): ";
        cin >> val;
        if(!val)
        break;
        pData=new Data(val);
        ll.Insert(pData);
    }
    
    ll.ShowAll();
    
   
        
    system("PAUSE");
    return 0;
}
Помогите разобраться в односвязном списке, не могу понять выполнение программы, что к чему.
Объясните на сколько можно подробнее...
Yandex
Объявления
11.10.2009, 20:13     Динамические списки
Ответ Создать тему
Опции темы

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