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

Создать класс "Односвязный список" - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Реализация ЭЦП любым методом либо на Delphi, либо на C http://www.cyberforum.ru/cpp-beginners/thread1193095.html
нужна реализация ЭЦП неважно каким методом либо на Delphi, либо на C++. если есть такое, скиньте, буду благодарна.
C++ Нужна помоощь в написании программы в Си++, пожалуйста Задали написать прогу, мучился неделю и никак... http://www.cyberforum.ru/cpp-beginners/thread1192766.html
Нужен код для модуля конфигурирования C++
Всем доброго времени суток. Объясню ситуацию. Я нисколько не программист и через месяц защита диплома. Я учусь совместно с женой, соответственно, мне нужно написать еще 1 из 2 дипломов (1 диплом я сделал), теперь нужно 2 сделать. Тема второго диплома Модуль конфигуратор для системы защиты информации. Жена сидит с грудничком, а я делаю дипломы :). Суть вопроса такова. Мне нужен кусок кода для...
Какие еще есть способы создания визуальных приложений кроме WinApi? C++
Здравствуйте, я так понимаю под Windows оконные приложения создаются на WinAPI. Хотел спросить есть ли другие инструменты для создания окон которые более удобные я попроще WinAPI, а то он какой то замороченный... Так же под другие среды работы... Не сочтите мои вопросы неправильно, я просто только учусь программировать...
C++ CImg и открытие файлов (или неоткрытие) http://www.cyberforum.ru/cpp-beginners/thread1186369.html
Здравствуйте! Кто работал c CImg, подскажите, в чем закавыка! Выдает ошибку открытия файла на строчках cil::CImg<unsigned char> img2(f2); cil::CImg<unsigned char> dest2(img2); В чем может быть причина? #include "stdafx.h" #include "CImg.h" #include "WinGDI.h" #undef min
C++ Форматирование текста в RichViewEdit Здравствуйте, очень нужна ваша помощь. Есть компонент RichViewEdit, нужно форматировать текст в нём(цвет,шрифт,размер,жирный,наклонный,подчеркнутый). Мне это почти удалось с помощью RichViewEdit->Style->StyleTemplates, но текст принимает только один из параметров,например, только жирный или только зелёный или только Arial шрифт и т.д. Есть английская справка, я пытался понять с помощью google... подробнее

Показать сообщение отдельно
kataris
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 16
31.05.2014, 16:06     Создать класс "Односвязный список"
Вот задание:
Реализовать следующие функции для работы с односвязным списком:
1. Вывод списка. Выводятся все элементы в соответствии с их порядком расположения в списке.
2. Вставка элемента в заданную позицию списка. Эта функция вставляет значение х в заданную позицию р в списке, где p=1, 2,…n, n+1. Если список содержит элементы a1, a2, ..., аn, то после выполнения этой функции список будет иметь вид а1, а2, ..., ар-1, х, ар, ..., a n.. Если р принимает значение n+1, то будем иметь a1 , a2, , ..., an ,, х. Если в списке нет позиции р, то оставить список без изменения.
3. Удаление элемента из заданной позиции списка. Эта функция удаляет элемент в позиции р списка, где p=1, 2,…n. Так, если список состоит из элементов a1, a2, ..., аn , то после выполнения этого оператора количество элементов уменьшится на единицу, а список будет иметь вид а1, а2, ...,, ap-1 ,ap+1, ..., аn. Оставить список без изменения, если в списке нет позиции р.
4. Удаление всех элементов из списка.
5. Проверка списка на упорядоченность его элементов. Функция должна возвращать одно из трех значений: 0 — если элементы не упорядочены, 1 — если элементы упорядочены по возрастанию, 2 — если элементы упорядочены по убыванию.
6. Объединение двух списков. В результате должен получиться третий список, в котором элементы списков чередуются до тех пор, пока один из списков не будет исчерпан. Оставшийся «хвост» более длинного списка помещается в конец нового списка.
Вот его решение:
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include<clocale>
using namespace std;
struct item
{
    int data;
    item *next;
    
};
//функция добавления элемента x в заданную позицию pos односвязного списка
void add(item *&top,int pos, int x)
{
    int j=1;
    int i; item *pnew, *p=top;
    pnew=new item; pnew->data=x;
    if (pos<=1||top==NULL) 
    {
        pnew->next=top; top=pnew;
    }
    else
    {
        for(i=1;i<pos-1;i++) 
            if (p->next!=NULL) 
            {    
                p=p->next;
                j++;
            }
        if (pos<=j+1)
        {
            pnew->next=p->next; p->next=pnew;
        }
    }
}
// вспомогательная функция для вывода списка
void print(item *top)
{
    item *p=top;
    while (p!=NULL) 
    {
        cout<<p->data<<' '; 
        p=p->next;
    }
    cout<<endl;
}
//удалить все элементы
void clrscr(item *&top)
{
    while(top!=NULL)
    { 
        if(top==NULL) 
        { 
            cout<<"спиок пуст!"<<endl; 
        }
        else 
        {
            item *p=top;
            top=top->next; 
            delete p; 
       }
    }
}
//удаление элемента с заданной позиции 
void delet(item *&top, int pos2)
    {
        item *a=top,*b;
        int i=0;
        while(a!=NULL)
        {
            a=a->next;
            i++;
        }
        if(pos2>i||pos2<1) 
        {
            cout<<"такой позиции в списке нет!"<<endl;
        }//проверка на сущ-е позиции
        
        else
        {
            if(pos2==1)
            {
                a=top->next;//если эл-т первый
                top=a;
            }
            if (pos2>1)
            {
                i=1;//если эл-т не первый
                a=top;
                while (i!=pos2-1) 
                {
                    i++; a=a->next;
                }
                b=a->next;
                a->next=b->next;//сдвигаем
                delete b;
            }
        }
}
//............................порядок............
int poryadok(item *top)
               { item *q1,*q2;
int l;
q1=top;//указатель на вершину списка
int i=0;int pos=0;
int j=0;
while (q1!=NULL){
    q2=q1->next;
    l=q1-q2;
    q1=q1->next;
    pos++;
        if(l>0){i++;}
        else {j++;}
}if(i==pos){cout<<"упорядочено по убыванию\n";}
else {if(j==pos){cout<<"упорядочено по возрастанию\n";}
else{cout<<"не упорядочено\n";}}
return 0;}
//........................объединение...............
void obedinenie(item *top){
    cout<<"список 1: ";
     print(top);int b;int a;int r;int c;int i;int f;
     item *p;
     cout<<"введите количество элементов в списке: ";
        cin>>b;
        if (b!=0)
            for (int f=1; f<=b; f++) // формирование списка
            {
                a=rand()%100;
                add(top,f,a); // вставка элемента 
            }
            cout<<"список 2: ";
        print(top); // вывод списка на экран
        int k=4;int g=k+b;
        if(g!=0)
            for (int h=1;h<=g;h++)
            {if(!(h%2)){ cout<<p->data<<' '; 
        p=p->next;}
            else{ cout<<p->data<<' '; 
        p=p->next;}}
}
int main() {
    setlocale(LC_ALL,"Russian");
     int pos, pos1, pos2, otv, da;
     item *first, *last;
     int x,r,k,m,y,j;
    item *top=NULL;
    
        cout<<"введите количество элементов в списке: ";
        cin>>k;
        if (k!=0)
            for (int i=1; i<=k; i++) // формирование списка
            {
                r=rand()%100;
                add(top,i,r); // вставка элемента 
            }
        print(top); // вывод списка на экран
        
    
        cout<<"Введите номер позиции для вставки: ";
        cin>>pos;
        cout<<"Введиде значение элемента для вставки: ";
        cin>>x;
        add(top,pos,x); // добавление элементов в любую позицию списка
        print(top);
    
        cout<<"Введите номер позиции элемента для удаления: ";
        cin>>pos2;
        delet(top,pos2);
        print(top);
        poryadok(top);
        obedinenie(top);
        cout<<"Удалить все элементы? да-1, нет-2 : ";
        int l;
        cin>>l;
        if (l==1){
            void clrscr(item *&top);
                cout<<"Элементы удалены.";
        }
        else {cout<<"элементы не удалены : ";
        print(top);
        }
    cin.get();
    cin.get();
}
Теперь мне нужно реализовать не односвязный список,а класс, выполняющий эти же функции
Помогите пожалуйста
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru