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

Описать функцию, которая определяет, входят ли все элементы первого списка в состав второго списка. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Посчитать количество строк в файле, которые начинаются и заканчиваются на одну и ту же букву http://www.cyberforum.ru/cpp-beginners/thread85829.html
задание : В исходном текстовом файле «In.txt» посчитать количество строк, которые начинаются и заканчиваются на одну и ту же букву. В результирующий файл «Out.txt» записать строку вида «В исходном файле ___ строк, удовлетворяющих заданному условию», если количество найденных строк больше нуля или «В исходном файле нет искомых строк» в противном случае. Если исходного файла не существует, то...
C++ вложенные циклы Вычислить сумму n членов выр-я: pow(-1, i+1)/pow(i+1, 2) , i=1,2,3,...n. Помогите пожалуйста с решением задачи http://www.cyberforum.ru/cpp-beginners/thread85824.html
Объявить и проинициализировать массив из трех элементов типа Person C++
Определен следующий тип-структура: char name ; int age; bool male; }; Объявить и проинициализировать массив из трех элементов типа Person.
Удвоить каждую встречающуюся "о" и "а" в строке C++
помогите с задачами!! 1) Дана строка. Удвоить каждую встречающуюся "о" и "а" 2) Определить количество слов во введенном тексте, начинающихся с заданной буквы. Считать, что слова в тексте разделены пробелами. 3)Зашифровать текст (не более 255 символов) ,поменяв поряджок следования слов. за ранее очень благодарна!!
C++ найти ошибки в фрагменте программы http://www.cyberforum.ru/cpp-beginners/thread85817.html
найти ошибки в фрагменте программы: char*str; gets(str); str='\0'; cout<<strlen(str);
C++ Программирование с использованием функций Помогите с задачей подробнее

Показать сообщение отдельно
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
14.01.2010, 21:17     Описать функцию, которая определяет, входят ли все элементы первого списка в состав второго списка.
Ладно ща сделаем:
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
#include <iostream.h>
#include <stdlib.h>
 
//Возвращаемые значения
//----------------------------------------------------------
//Для функции: long Create(Node **pbeg, Node **pend, DATA d)
#define OK_CREATE 0x000       //список создан
#define LIST_IS   0x100       //список уже существует, его повторное создание невозможно
 
//Для функции: long add(Node  **pend, DATA d)
#define OK_ADD       0x300          //добавили в конец списка
#define LIST_IS_NOT  0x003          //список пуст создайте его заново
//---------------------------------------------------------------------------
 
//описываем узел
struct Node {
int dan;
Node *prev;
Node *next;
};
 
//Основные функции по работе со списком----------------------------------------------------------------------------------------
long Create (Node **pbeg, Node **pend, int d);     //создание списка
long add    (Node  **pbeg, Node **pend ,int d);    //добавление в конец
Node * Find (Node*pbeg, int key);                  //поиск узла по ключу
bool deleteU(Node **pbeg, Node **pend ,  int key);           //удаление по ключу
void Print(Node *pbeg);                                      //показ списка сначала
int equeal(Node *pbeg1 , Node *pbeg2);             //Поэлементное сравнение списков
//-----------------------------------------------------------------------------------------------------------------------------
 
void main(){
//Указатели для операций-------------------------------------------------------------------------------------------------------
Node *pbeg1 = NULL;
Node *pend1 = NULL;
//-----------------
Node *pbeg2 = NULL;
Node *pend2 = NULL;
//---------------------------------------------
Create(&pbeg1,&pend1,-30);   //создаём список: 1
int mas1[5]={-8,-4,5,7,3};
for(int i=0;i<5;i++)add(&pbeg1,&pend1,mas1[i]);
//---------------------------------------------
Create(&pbeg2,&pend2,-30);   //создаём список: 2
int mas2[5]={-8,-4,5,7,3};
for(i=0;i<5;i++)add(&pbeg2,&pend2,mas2[i]);
//---------------------------------------------
//СРавниваем списки
int mes = equeal(pbeg1,pbeg2);
if(mes==1)cout<<"Списки равны\n";
else cout<<"списки не равны\n";
 
 
//Освобождаем память из под списков.
//Из под первого
while(pbeg1){
Node*tmp=pbeg1;
pbeg1=pbeg1->next;
delete tmp;
}
//Из под второго
while(pbeg2){
Node*tmp=pbeg2;
pbeg2=pbeg2->next;
delete tmp;
}
 
return;
}
 
//---------------------------------------------------------------------------------------------------------------------
 
 
 
//создание списка-----------------------------
long Create (Node **pbeg, Node **pend, int d){
//Безопасное создание списка, если список пуст создаём его
if((*pbeg)==NULL||(*pend)==NULL) {
 
Node *pv = new Node;  //создаём узел
pv->dan = d;          //присваиваем основным данным узла, значения
pv->next = NULL;      //следующего  узла нет
pv->prev = NULL;      //предыдущего узла нет
(*pbeg)=pv;           //это узел начальный
(*pend)=(*pbeg);      //начало-конец списка
return OK_CREATE;     //создали список
}
//иначе
else return LIST_IS;  //список существет создавать его не надо
 
 
}
 
//добавление в конец очереди
long add(Node  **pbeg, Node **pend, int d){
if((*pbeg)==NULL||(*pend)==NULL)return LIST_IS_NOT;
Node *pv = new Node;  //создаём узел
pv->dan = d;          //присваиваем основным данным узла, значения
pv->next = NULL;      //следующего  узла ещё нет
pv->prev =(*pend);    //связываемя с последним
(*pend)->next = pv;   //последний связывается с новым
(*pend)=pv;           //новый становится последним.
return  OK_ADD ;
 
 
}
 
 
 
//Поиск-----------------------------------
Node * Find (Node* pbeg, int key){
Node *pv=NULL;
while(pbeg){
    if(key==pbeg->dan){
    pv=pbeg;
    return pv;
    }
pbeg=pbeg->next;  //следующий
}
return NULL;      //Не найден(Когда список пустой поиск делать не стоит, или проверяйте после вызова на NULL)
}
 
 
//удалить узел
bool deleteU(Node **pbeg, Node **pend, int key){
if((*pbeg)==NULL||(*pend)==NULL)return false;
Node * temp = *pbeg;
//выполяем поиск по ключу
while(temp){
    //Если нашли
    if(key==temp->dan){
    
        //если удаляемый узел это конец
        if(temp ==(*pend)){
        (*pend)=(*pend)->prev;
        (*pend)->next=NULL;
        }
        //если удаляемый узел начало
        else if(temp ==(*pbeg)){
        (*pbeg)=(*pbeg)->next;
        (*pbeg)->prev=NULL;
        }
        //иначе удаляем из середины
        else  {      
        (temp->prev)->next=temp->next;
        (temp->next)->prev=temp->prev;  }
  
        delete temp;  //удаляем узел 
        temp = NULL;  //в ноль на всякий
        return true;
    }
temp=temp->next; //следующий
}
 
return false;
}
 
 
//показать список на экран--------------------
void Print(Node *pbeg){
    
    while(pbeg){
        cout<<pbeg->dan<<'\n';
        pbeg=pbeg->next;
    }
}
 
 
 
//Поэлементное сравнение списков
int equeal(Node *pbeg1 , Node *pbeg2){
 
while((pbeg1!=NULL)||(pbeg2!=NULL)){
 
if(pbeg1->dan!=pbeg2->dan)return 0; 
pbeg1=pbeg1->next;
pbeg2=pbeg2->next;
}
return 1;          
 
 
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru