#include
#include
struct Student
{
- ¿Es ‘la pareja se casó’ o ‘la pareja se casó’?
- Estoy escribiendo un plan de estudios para estudiantes de primaria. ¿Qué formato de estilo debo usar para citar referencias?
- ¿Cómo ha sido beneficioso para usted escribir un diario durante más de 3 meses?
- ¿Alguien puede ayudarme a escribir mi disertación?
- ¿Escribir es un acto de fe?
int std_id;
nombre del personaje [30];
char add [30];
char phn [30];
flotador dob;
char ini [10];
struct Student * next; // Puntero autorreferencial …
};
typedef struct Student Node;
Linkfloat vacío ()
{
flotante a = 0, * b; // Para crear un enlace de flotante a algún compilador …
b = & a;
a = * b;
}
Pantalla vacía (Nodo * cabeza)
{
Nodo * p;
int i;
if (cabeza == NULL)
{
printf (“No hay registros en la base de datos”);
}
más
{
p = cabeza;
para (i = 0; i <1; i ++)
{
printf (“-“);
}
printf (“Base de datos de estudiantes actualizada \ n”);
para (i = 0; i <1; i ++)
{
printf (“”);
}
printf (“”);
printf (“\ nstd_id Nombre Dob Dirección de contacto Nombre iniciales \ n”);
para (i = 0; i <10; i ++)
{
printf (“”);
}
printf (“”);
while (p! = NULL)
{
printf (“% d% s% 0.2f% s% s% s \ n”, p-> std_id, p-> nombre, p-> dob, p-> phn, p-> add, p-> ini) ;
printf (“”);
para (i = 0; i <1; i ++)
{
printf (“”);
}
printf (“”);
flushall ();
p = p-> siguiente; // Ir al siguiente nodo …
}
}
}
Nodo * Crear (Nodo * encabezado)
{
int n, i;
Nodo * nn, * p;
printf (“¿Cuántas entradas para crear una base de datos ??? \ n”);
scanf (“% d”, & n);
para (i = 0; i <n; i ++)
{
if (cabeza == NULL)
{
nn = (Nodo *) malloc (sizeof (Nodo)); // Creando el primer nodo …
printf (“Ingrese std_id No., Nombre y Dob Dirección de contacto \ n”);
scanf (“% d”, & (nn-> std_id));
flushall ();
obtiene (nn-> nombre);
scanf (“% f”, & (nn-> dob));
flushall ();
obtiene (nn-> phn);
obtiene (nn-> agregar);
obtiene (nn-> ini);
nn-> siguiente = NULL; // Establecer junto a NULL …
cabeza = nn;
}
más
{
p = nn = cabeza;
while (nn-> next! = NULL)
{
nn = nn-> siguiente;
}
nn-> siguiente = (Nodo *) malloc (sizeof (Nodo)); // Creando más nodos …
nn = nn-> siguiente;
printf (“Ingrese std_id, Nombre y Dob Dirección de contacto \ n”);
scanf (“% d”, & (nn-> std_id));
flushall ();
obtiene (nn-> nombre);
scanf (“% f”, & (nn-> dob));
flushall ();
obtiene (nn-> phn);
obtiene (nn-> agregar);
obtiene (nn-> ini);
nn-> siguiente = NULL;
nn = p;
}
}
cabeza de retorno;
}
tipo vacío (Nodo * cabeza)
{
// Ir al siguiente nodo …
}
Nodo * Insertar (Nodo * cabeza)
{
int ch, r;
char ans;
Nodo * p, * nn, * q;
hacer
{
printf (“¿Dónde quieres ingresar una nueva entrada ??? :::: \ t”);
printf (“\ http: //n1.En el comienzo http://2.En el medio Einführung Kurzdomains el final ::::: \ t”);
printf (“\ nIntroduzca su elección ::: \ n”);
scanf (“% d”, & ch);
interruptor (ch)
{
caso 1:
/ * Insertar al comienzo * /
p = cabeza;
nn = (Nodo *) malloc (sizeof (Nodo));
printf (“\ nIntroduzca std_id, nombre y dirección de contacto del dob :::: \ t”);
scanf (“% d”, & (nn-> std_id));
flushall ();
obtiene (nn-> nombre);
scanf (“% f”, & (nn-> dob));
flushall ();
obtiene (nn-> phn);
obtiene (nn-> agregar);
obtiene (nn-> ini);
nn-> siguiente = NULL;
nn-> siguiente = p;
cabeza = nn; // establece el primer nodo como cabeza …
printf (“\ nLa entrada se crea correctamente. \ n”);
Pantalla (cabeza);
descanso;
caso 2:
/ * Insertar en el medio * /
if (cabeza == NULL)
{
printf (“Sin embargo, la base de datos no se ha creado. \ n”);
printf (“La base de datos está vacía. \ n”);
printf (“Primero crear base de datos”);
}
más
{
printf (“Después de lo cual std_id ¿Desea insertar nuevos datos ???”);
scanf (“% d”, & r);
p = cabeza;
while (p-> std_id! = r && p-> next! = NULL)
{
p = p-> siguiente; // Ir a ese std_id no …
}
if (p-> std_id! = r)
{
printf (“No existe tal entrada”);
}
más
{
nn = (Nodo *) malloc (sizeof (Nodo));
printf (“Ingrese std_id, Nombre y dirección de contacto dob”);
scanf (“% d”, & (nn-> std_id));
flushall ();
obtiene (nn-> nombre);
scanf (“% f”, & (nn-> dob));
flushall ();
obtiene (nn-> phn);
obtiene (nn-> agregar);
obtiene (nn-> ini);
nn-> siguiente = NULL;
q = p-> siguiente;
p-> siguiente = nn;
nn-> siguiente = q;
printf (“La entrada se creó con éxito”);
Pantalla (cabeza);
}
}
descanso;
caso 3:
/ * Insertar al final * /
if (cabeza == NULL)
{
printf (“Sin embargo, la base de datos no se creó”);
printf (“La base de datos está vacía”);
printf (“Primero crear base de datos”);
}
más
{
p = cabeza;
nn = (Nodo *) malloc (sizeof (Nodo));
printf (“Ingrese std_id, Nombre y dirección de contacto dob”);
scanf (“% d”, & (nn-> std_id));
flushall ();
obtiene (nn-> nombre);
scanf (“% f”, & (nn-> dob));
flushall ();
obtiene (nn-> phn);
obtiene (nn-> agregar);
obtiene (nn-> ini);
nn-> siguiente = NULL;
nn-> siguiente = NULL;
while (p-> next! = NULL)
{
p = p-> siguiente; // Ir al último nodo …
}
p-> siguiente = nn;
printf (“La entrada se creó con éxito”);
Pantalla (cabeza);
}
descanso;
}
printf (“¿Desea insertar más datos (S / N) ???”);
flushall ();
scanf (“% d”, & ans);
} while (ans == ‘y’ || ans == ‘Y’);
cabeza de retorno;
}
Nodo * Eliminar (Nodo * encabezado)
{
Nodo * p, * q, * r;
char ans;
int ch, n;
hacer{
printf (“¿Qué entrada quieres eliminar ???”);
printf (“1.Primero 2.Medio 3.Fin”);
scanf (“% d”, & ch);
if (cabeza == NULL)
{
printf (“Sin embargo, la base de datos no se creó”);
printf (“La base de datos está vacía”);
printf (“Primero crear base de datos”);
}
más
{
interruptor (ch)
{
caso 1:
/ * Eliminar primer nodo * /
p = cabeza;
cabeza = cabeza-> siguiente; // Establecer el segundo nodo como cabeza …
libre (p);
printf (“La primera entrada se elimina”);
Pantalla (cabeza);
descanso;
caso 2:
/ * Eliminar nodo central * /
p = cabeza;
printf (“Ingrese std_id. que desea eliminar:”);
scanf (“% d”, & n);
while ((p-> next) -> std_id! = n && p-> next-> next! = NULL)
{
p = p-> siguiente; // Vaya hasta el nodo -1 que desea eliminar …
}
if (p-> next-> next == NULL)
{
printf (“No existe tal entrada”);
}
más
{
q = p-> siguiente;
r = q-> siguiente;
p-> siguiente = r;
libre (q); // Eliminar ese nodo …
printf (“La entrada se elimina”);
Pantalla (cabeza);
}
descanso;
caso 3:
/ * Eliminar el último nodo * /
p = cabeza;
while (p-> next-> next! = NULL)
{
p = p-> siguiente; // Vaya hasta el nodo -1 que desea eliminar …
}
q = p-> siguiente;
libre (q); // Eliminar el último nodo …
p-> siguiente = NULL;
printf (“Se eliminó la última entrada”);
Pantalla (cabeza);
descanso;
}
}
printf (“¿Desea eliminar más datos (S / N) ???”);
flushall ();
scanf (“% d”, & ans);
} while (ans == ‘y’ || ans == ‘Y’);
cabeza de retorno;
}
Buscar (Nodo * cabeza)
{
Nodo * p;
int r, cnt = 0;
if (cabeza == NULL)
{
printf (“Sin embargo, la base de datos no se creó”);
printf (“La base de datos está vacía”);
printf (“Primero crear base de datos”);
}
más
{
p = cabeza;
printf (“Ingrese std_id que desea buscar: \ n”);
scanf (“% d”, & r);
while (p-> std_id! = r && p-> next! = NULL) // Buscar std_id no …
{
p = p-> siguiente;
cnt ++;
}
if (p-> std_id! = r)
printf (“\ nNo hay tal entrada”);
más
{
printf (“\ nstd_id% d está en la posición% d th.”, r, (cnt + 1));
printf (“\ nstd_id Nombre Dob Dirección de contacto \ n”);
printf (“% d% s% 0.2f% d% s% s% s \ n”, p-> std_id, p-> nombre, p-> dob, p-> phn, p-> add, p-> ini);
}
}
}
Modificar (Nodo * cabeza)
{
Nodo * p;
int r;
if (cabeza == NULL)
{
printf (“Sin embargo, la base de datos no se creó”);
printf (“La base de datos está vacía”);
printf (“Primero crear base de datos”);
}
más
{
p = cabeza;
printf (“Ingrese el std_id. cuyos datos desea modificar:”);
scanf (“% d”, & r);
while (p-> std_id! = r && p-> next! = NULL)
{
p = p-> siguiente;
}
if (p-> std_id! = r)
{
printf (“No hay tal registro en la base de datos”);
}
más
{
printf (“Los datos ingresados std_id son:”);
printf (“std_id Nombre Dob Contacto \ t dirección inicial”); // Mostrar datos que van a modificar …
printf (“% d% s% 0.2f% d% s% s% s \ n”, p-> std_id, p-> nombre, p-> dob, p-> phn, p-> add, p-> ini);
printf (“\ nIntroduzca nuevo std_id, nuevo nombre y dirección de contacto del dob para esta entrada: \ n”);
scanf (“% d”, & p-> std_id);
flushall ();
obtiene (p-> nombre); // Ingrese nuevos datos …
scanf (“% f”, & (p-> dob));
printf (“Los datos nuevos ingresados son:”);
printf (“std_id Nombre Dob Dirección de contacto”);
printf (“% d% s% 0.2f% d% s% s% s \ n”, p-> std_id, p-> nombre, p-> dob, p-> phn, p-> add, p-> ini);
Pantalla (cabeza);
}
}
}
Cuenta (Nodo * cabeza)
{
Nodo * p;
int cnt = 0;
if (cabeza == NULL)
{
printf (“Sin embargo, la base de datos no se creó”);
printf (“La base de datos está vacía”);
printf (“Primero crear base de datos”);
printf (“Hay 0 registros en la base de datos”);
}
más
{
p = cabeza;
while (p-> next! = NULL)
{
p = p-> siguiente;
cnt ++; // Contando registros …
}
printf (“Hay% d registros en la base de datos”, (cnt + 1));
}
}
vacío principal()
{
int ch, i;
char op;
Nodo * cabeza;
cabeza = NULL;
printf (“\ n * ———- Studednt Database ———– * \ n”);
hacer
{
printf (“\ nMenu \ n1.Create Database \ n2.Insert \ n3.Delete \ n4.Search \ n5.Modify \ n6.Display \ n7.Display Reverse \ n8.Count Records \ n9.Exit \ n”);
printf (“Ingrese su elección \ n”);
scanf (“% d”, & ch);
interruptor (ch)
{
caso 1:
cabeza = Crear (cabeza); // Llamada para crear …
descanso;
caso 2:
cabeza = Insertar (cabeza); // Llamada para insertar …
descanso;
caso 3:
cabeza = Eliminar (cabeza); // Llamar para eliminar …
descanso;
caso 4:
Buscar (cabeza); // Llamada para buscar …
descanso;
caso 5:
Modificar (cabeza); // Llamada para modificar …
descanso;
caso 6:
Pantalla (cabeza); // Llamada para mostrar …
descanso;
caso 7:
ordenar (cabeza); // Llamada para mostrar reversar …
descanso;
caso 8:
Cuenta (cabeza); // Llamada para contar registros …
descanso;
caso 9:
salida(); //Salida…
defecto :
printf (“Has introducido una elección incorrecta ::: \ n”);
}
printf (“\ n ¿Desea salir (S / N) ??? \ n”);
flushall ();
scanf (“% c”, & op);
} while (op == ‘n’ || op == ‘N’);
}