-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathejercicio 5.cpp
More file actions
144 lines (119 loc) · 2.8 KB
/
Copy pathejercicio 5.cpp
File metadata and controls
144 lines (119 loc) · 2.8 KB
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
#include<iostream>
#include<conio.h>
#include<string.h>
using namespace std;
void inicializa(struct cola &);
void encola(struct cola &, char[],char[],char[]);
void verCola(struct cola);
void vaciaCola(struct cola &);
int desencola(struct cola &,cola &,cola &);
struct nodo{
char name[20];
char sex[20];
char age[20];
struct nodo * sgte;
};
char name[20];
char sex[20];
char age[20];
struct cola{
struct nodo * delante;// apunta al primero
struct nodo * atras;// apunta al ultimo
};
struct cola q,cola1,cola2;
int main()
{
int opc;
int n;
inicializa(q);
do{ system("cls");
cout<<endl<<"******MENU********"<<endl;
cout<<"[1] Ingresa Elementos"<<endl;
cout<<"[2] Mostrar todas las colas "<<endl;
cout<<"[3] Visualizar cola"<<endl;
cout<<"[4] Salir"<<endl;
cout<<"Ingrese Opcion: ";
cin>>opc;
switch(opc)
{
case 1: cout<<"Ingresar nombre: ";
fflush(stdin);
cin.getline(name,20);
cout<<"Ingresar sexo(m/f): ";
fflush(stdin);
cin.getline(sex,20);
cout<<"Ingresar edad: ";
fflush(stdin);
cin.getline(age,20);
encola(q,name,sex,age);
system("pause");
break;
case 2: cout<<"Cola principal: \n";
verCola(q);
cout<<"Cola 1: \n";
verCola(cola1);
cout<<"Cola 2: \n";
verCola(cola2);
if(q.delante==NULL){
cout<<endl<<"No hay elementos en la cola"<<endl;
}
system("pause");
break;
case 3: cout<<endl<<"Elementos de la cola:"<<endl;
verCola(q);
system("pause");
break;
}
}while(opc!=4);
}
//funciones---------------------------
void inicializa(struct cola &q)
{q.delante=NULL;//apunta al primer elemento
q.atras=NULL; //apunta al ultimo elemento
}
//INGRESA ELEMENTOS EN LA COLA
void encola(struct cola &q,char n[20],char s[20],char a[20])
{
struct nodo *p;
p=new (struct nodo);
strcpy(p->name,n);
strcpy(p->sex,s);
strcpy(p->age,a);
p->sgte=NULL;
if(q.delante==NULL)
q.delante=p; //ingresa el primer elemento
else{
if(q.delante->sgte!=NULL){
desencola(q,cola1,cola2);
}
(q.atras)->sgte=p;// si no apunta a un nuevo nodo
}
q.atras=p;// la cola apunta al ultimo elemento recientemente ingresado
}
//dividir elementos
int desencola(struct cola &q,struct cola &cola1,struct cola &cola2)
{
inicializa(cola1);
inicializa(cola2);
nodo *p=q.delante;
while(p!=NULL){
nodo *p2=(q.delante)->sgte;
if(p2)while((strcmp(p->name,p2->name)==0))
{
encola(cola1,p->name,p->sex,p->age);
p2=p2->sgte;
}
p=p->sgte;
}
}
void verCola(struct cola q){
struct nodo *p;
p=q.delante;// apunta al primer elementos
while(p!=NULL)
{
cout<<"nombre: "<<p->name<<" ";
cout<<"sexo: "<<p->sex<<" ";
cout<<"edad: "<<p->age<<endl;
p=p->sgte;
}
}