Dev - C++ - Implementar la lista de asignaturas, como la vista lista doblemente enlazada

 
Vista:

Implementar la lista de asignaturas, como la vista lista doblemente enlazada

Publicado por Alejandro (1 intervención) el 03/10/2017 07:10:13
Ejercicio a desarrollar:
• Implementar la lista de asignaturas, como la vista anteriormente, pero utilizando una lista doblemente enlazada y donde la información de cada nodo es:
• Código de la asignatura
• Nombre de la Asignatura.
• Cantidad de Horas.


el codigo es este:

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
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
using namespace std;
struct nodoasig {
string codigo, descripcion;
int cantidad;
struct nodoasig *siguiente;
};
nodoasig *primero,*ultimo;
void iniciar()
{
primero=NULL;
ultimo=NULL;
}
int vacia()
{
if (primero==NULL)
return 1;
else
return 0;
}
void insertar_delante ( string cod, string nomb, int cant)
{
nodoasig *nodo;
nodo= new nodoasig;
nodo->siguiente=NULL;
nodo->codigo=cod;
nodo->descripcion=nomb;
nodo->cantidad=cant;
if (vacia())
{
primero=nodo;
 
ultimo=nodo;
}
else
{
nodo->siguiente=primero;
primero=nodo;
}
return;
}
void mostrar ()
{
nodoasig *p;
if (vacia())
cout<<"Lista vacia";
else
{
p = primero ;
while (p != NULL){
cout<< p->codigo<<endl;
cout<< p->descripcion<<endl;
cout<< p->cantidad<<endl;
p = p->siguiente;
getchar();
}
}
return;
}
void eliminar(string valor)
{
nodoasig *p,*q;
q=primero;
p=primero;
while ((p!= NULL) && (p->codigo!=valor))
{
q=p;
p = p->siguiente;
 
}
if (p==NULL)
cout<<"No existe ese elemento en la lista";
else
{
if (primero==ultimo)
{
primero=NULL;
ultimo=NULL;
}
else
{
q->siguiente=p->siguiente;
if (p==primero)
primero=p->siguiente;
else
if (p==ultimo)
ultimo=q;
}
}
return;
}
int main(int argc, char *argv[])
{
int cant;
string cod, nombre, c;
int opc;
iniciar();
do
{
system("cls");
cout<<" LISTA DE ASIGNATURAS"<<endl;
cout<<" Seleccione la opcion a realizar\n\n";
cout<<" 1.- Insertar una asignatura\n";
cout<<" 2.- Eliminar una asignatura\n";
cout<<" 3.- Mostrar toda la lista de asignaturas\n";
cout<<" 4.- Salir";
cout<<" \n\n\nOpcion(1-4): ";
cin>>opc;
switch(opc)
{
case 1:
cod="";
nombre="";
cant=0;
cout<<"Entre los Datos de la Asignatura:\n ";
cout<<"Codigo o siglas de la Asignatura: \n";
cin>>cod;
cout<<"Nombre de la Asignatura: \n";
cin>>nombre;
cout<<"Cantidad de Horas:\n ";
cin>>cant;
insertar_delante(cod,nombre,cant);
break;
case 2:
cout<<"codigo de la Asignatura a eliminar: \n";
cin>>c;
eliminar(c);
getchar();
break;
case 3:
mostrar();
cout<<"Oprima una tecla para salir";
getchar();
break;
case 4:
exit(0);
break;
}
}
while ((opc!=4));
return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder