Int info;
wcout<<L"Введите число для добавления в множество: "; cin>>info;
if (prov(info)) {wcout<<L"\nтакой элемент уже есть в множестве! \n"; oshow(); return;}
if (count++==-1) nach=(int *)malloc(sizeof(int));
else {
int *tmp=(int*)realloc(nach,(count+1)*sizeof(int));
if (tmp==NULL) {wcout<<L"Недостаточно памяти!"; getch(); return;}
nach=tmp;
}
nach[count]=info;
}
void odel(){
Int info;
wcout<<L"Введите число для удаления из множества: "; cin>>info;
oshow();
int i,k=-1;
for (i=0; i<=count;++i) if (nach[i]==info) {k=i; break;}
if (k==-1) {wcout<<L"\nДанный элемент отсутствует в множестве!"; getch(); return;};
for (int j=k;j<count;nach[j]=nach[j+1],++j);
--count;
if (count<0) free(nach);
else {int*tmp=(int*)realloc(nach,(count+1)*sizeof(int));}
wcout<<L"\nчисло удалено! посмотрим состояние множества: ";
oshow();
}
Листинг программы
----------------------Задание 1----------------------
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <conio.h>
using namespace std;
struct sp {
int ch;
sp *next,*last;
};
sp *nach;
void sshow(){
sp *tmp=nach;
wcout<<L"Какие элементы хранятся в очереди: \n\r";
while (tmp!=NULL) {printf("%d, ",(*tmp).ch); tmp=(*tmp).next;}
getch();
}
void snew(){
sp *tmp,*now;
int info;
wcout<<L"Введите число для добавления в очередь: ";
cin>>info;
tmp=nach;
if (tmp!=NULL) while ((*tmp).next!=NULL) tmp=(*tmp).next;
now=tmp;
tmp=(sp *)malloc(sizeof(sp));
if (now==NULL) {nach=now=tmp; (*tmp).last=NULL;}
else {(*now).next=tmp; (*tmp).last=now;}
(*tmp).ch=info;
(*tmp).next=NULL;
now=tmp;
wcout<<L"\nЧисло добавленно в очередь!";
getch();
}
void sdel(){
sp *tmp;
int info;
sshow();
if (nach==NULL) {wcout<<L"\nОчередь пуста - возвращаемся в меню!"; getch(); return ;}
wcout<<L"\nВведите, число которое хотите удалить: "; cin>>info;
tmp=nach;
while (tmp!=NULL && (*tmp).ch!=info) tmp=(*tmp).next;
if (tmp==NULL) {wcout<<L"\nТакого элемента нет - возвращаемся в меню!"; getch(); return ;}
if (tmp==nach) nach=(*tmp).next;
if ((*tmp).last!=NULL) (*(*tmp).last).next=(*tmp).next ;
if ((*tmp).next!=NULL) (*(*tmp).next).last=(*tmp).last ;
free(tmp);
wcout<<L"\nПосле удаления элемента очередь приобрела вид: \n";
sshow();
}
void ex(){
exit(0);
}
int main(){
nach=NULL;
wcout.imbue(locale(".866"));
void (*menu[4])()={sshow,snew,sdel,ex};
int k=0,c;
while (1) {
wcout<<L"Меню:";
wcout<<L"\n\r№1-Просмотрим очередь ";
if (k==0) cout<<'V';
wcout<<L"\n\r№2-добавим элемент ";
if (k==1) cout<<'V';
wcout<<L"\n\r№3-удаления элемента по значению ";
if (k==2) cout<<'V';
wcout<<L"\n\r№4-выход ";
if (k==3) cout<<'V';
c=getch();
if ((c=='w') || (c=='W')) if (k>0) --k;
if ((c=='s') || (c=='S')) if (k<3) ++k;
if (c==13) {system("cls"); menu[k](); }
system("cls");
}
return 0;
}
----------------------Задание 2----------------------
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <conio.h>
using namespace std;
struct sp {
int ch;
sp *last;
};
sp *endst;
void sshow(){
sp *tmp=endst;
wcout<<L"Какие элементы хранятся в стеке: \n\r";
while (tmp!=NULL) {printf("%d, ",(*tmp).ch); tmp=(*tmp).last;}
getch();
}
void snew(){
sp *tmp;
int info;
wcout<<L"Введите число для добавления в стек: ";
cin>>info;
tmp=(sp *)malloc(sizeof(sp));
if (endst==NULL) {endst=tmp; (*tmp).last=NULL;}
else (*tmp).last=endst;
(*tmp).ch=info;
endst=tmp;
wcout<<L"\nЧисло добавленно в стек!";
getch();
}
void sdel(){
sp *tmp;
sshow();
if (endst==NULL) {wcout<<L"\nСтек пуст - возвращаемся в меню!"; getch(); return ;}
tmp=endst;
endst=(*endst).last;
free(tmp);
wcout<<L"\nПосле удаления элемента очередь приобрела вид: \n";
sshow();
}
void ex(){
exit(0);
}
int main(){
endst=NULL;
wcout.imbue(locale(".866"));
void (*menu[4])()={sshow,snew,sdel,ex};
int k=0,c;
while (1) {
wcout<<L"Меню:";
wcout<<L"\n\r№1-Просмотрим стек ";
if (k==0) cout<<'V';
wcout<<L"\n\r№2-добавим элемент в стек ";
if (k==1) cout<<'V';
wcout<<L"\n\r№3-удаления элемента ";
if (k==2) cout<<'V';
wcout<<L"\n\r№4-выход ";
if (k==3) cout<<'V';
c=getch();
if ((c=='w') || (c=='W')) if (k>0) --k;
if ((c=='s') || (c=='S')) if (k<3) ++k;
if (c==13) {system("cls"); menu[k](); }
system("cls");
}
return 0;
}
----------------------Задание 3---------------------
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <conio.h>
using namespace std;
int count,*nach;
void oshow(){
wcout<<L"\nЭлементы, которые хранятся в множестве: \n";
for (int i=0;i<=count; cout<<nach[i++]<<", ");
getch();
}
int prov(int info){
for(int i=0;i<=count;++i) if (nach[i]==info) return 1;
return 0;
}
void onew(){