Está en la página 1de 4

1 //By Jgg

2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <string.h>
5 #include <conio.h>
6 #include <iostream>
7
8 struct dato {
9 int i;
10 dato *s;
11 }*a, *i, *p, *e;
12
13 int da;
14
15 int buscar(int d);
16 void insertar(int dat);
17 void mostrar(void);
18 void borrar(void);
19 void menu(void);
20 void guardar(void);
21 void cargar(void);
22
23 main(){
24
25 menu();
26
27 }
28
29 void menu(void){
30 int opc,da;
31
32 do
33 {
34 cout<<"1 - Buscar datos";
35 cout<<"\t2 - Insertar datos";
36 cout<<"\t3 - Mostrar todos los datos";
37 cout<<"\t4 - Borrar un dato";
38 cout<<"\t5 - Guardar datos a Archivo";
39 cout<<"\t6 - Cargar datos de Archivo";
40 cout<<"\t0 - Finalizar";
41 cout<<"\nSeleccione opcion: ";
42 cin>>opc;
43
44 switch(opc)
45 {
46
47 case 0: cout<<"\n\nFinaliza el programa";
48 getch();
49
50 //no hay que olvidarse que antes de
51 //abandonar el barco ...
52 //hay que hundir todos los botes
53 // o sea usar delete para eliminar
54 //toda la lista
55 p=i;
56 while(p)
57 {
58 a=p;
59 p=p->s;
60 delete(a);
61 }
62 exit(0);
63
64
65 case 1: cout<<"\n\nIngrese dato a buscar: ";
66 cin>>da;
67 if(buscar(da))
68 cout<<"\n\nDato existe";
69 else
70 cout<<"\n\nDato NO EXISTE";
71 getch();
72 break;
73 case 2: cout<<"Ingrese dato: ";
74 cin>>da;
75 insertar(da);
76 break;
77 case 3: mostrar();
78 break;
79 case 4: borrar();
80 break;
81 case 5: guardar();
82 break;
83 case 6: cargar();
84 break;
85
86 //por las dudas que el operador ingrese
87 //cualquier verdura, fruta u otro tipo de hierba
88 default: cout<<"\n\nOPCION NO VALIDA!!!";
89 getch();
90 }
91 }while(opc);
92 }
93
94 void mostrar(void){
95 int cont=1;
96 if(!i)
97 {
98 cout<<"\n\nNO HAY LISTA PARA MOSTRAR";
99 getch();
100 return;
101 }
102 p=i;
103 cout<<endl<<endl;
104 while(p)
105 {
106 cout<<cont++<<" - Valor = "<<p->i<<endl;
107 p=p->s;
108 }
109 cout<<"\n\nEso es todo";
110 getch();
111 }
112
113 int buscar(int d){
114 if (!i)
115 {
116 cout<<"No hay datos en la lista!!!";
117 getch();
118 return(0);
119 }
120 p=i;
121 a=NULL;
122 while(p->s && p->i<d)
123 {
124 a=p;
125 p=p->s;
126 }
127 return(p->i==d?1:0);
128 }
129
130 void insertar(int dat)
131 {
132 if(!i){
133 i=new(dato);
134 i->s=NULL;
135 i->i=dat;
136 return;
137 }
138
139 if(buscar(dat)){
140 cout<<"\n\nDato existente";
141 getch();
142 return;
143 }
144
145 e=new(dato);
146 e->i=dat;
147
148 if(p==i && p->s){
149 e->s=p;
150 i=e;
151 return;
152 }
153
154 if(p==i && !p->s){
155 if(p->i < e->i){
156 p->s=e;
157 e->s=NULL;
158 }
159 else{
160 e->s=p;
161 i=e;
162 }
163
164 return;
165 }
166
167 if(p->s){
168 a->s=e;
169 e->s=p;
170 return;
171 }
172
173 if(e->i > p->i){
174 e->s=NULL;
175 p->s=e;
176 }
177 else{
178 a->s=e;
179 e->s=p;
180 }
181 }
182
183 void borrar(void){
184 cout<<"\n\nIngrese dato a eliminar: ";
185 cin>>da;
186 if(buscar(da))
187 {
188 if(a)
189 a->s=p->s;
190 else
191 i=p->s;
192 delete(p);
193 cout<<"\n\nDato eliminado";
194 }
195 else
196 cout<<"\n\nDato no se encuentra";
197 getch();
198 }
199
200 void guardar(void){
201 FILE *arch;
202 arch=fopen("DATOS-A.TXT","w");
203 if(!i)
204 {
205 cout<<"\n\nNO HAY LISTA PARA GUARDAR";
206 getch();
207 return;
208 }
209 p=i;
210 while(p)
211 {
212 fprintf(arch,"%i\n",p->i);
213 p=p->s;
214 }
215 cout<<"\n\nArchivo Guardado";
216 fclose(arch);
217 getch();
218 }
219
220 void cargar(void){
221 int c,x;
222 FILE *arch;
223 arch=fopen("DATOS-A.TXT","r");
224
225 if(!arch){
226 cout<<"\n\nNO EXISTE EL ARCHIVO";
227 getch();
228 return;
229 }
230
231 do{
232 c=fscanf(arch,"%i\n",&x);
233
234 if(c!=EOF){
235 insertar(x);
236 }
237 }while (c!=EOF);
238
239 cout<<"\n\nArchivo Cargado";
240 fclose(arch);
241 getch();
242 }
243

También podría gustarte