Descargar

Estructura de datos (página 2)

Enviado por Efra�n Estrada


Partes: 1, 2

La lista enlazada básica es la lista enlazada simple la cual tiene un enlace por nodo. Este enlace apunta al siguiente nodo en la lista, o al valor NULL o a la lista vacía, si es el último nodo.

edu.red

Una lista enlazada simple contiene dos valores: el valor actual del nodo y un enlace al siguiente nodo

Lista Doblemente Enlazada

Un tipo de lista enlazada más sofisticado es la lista doblemente enlazada o lista enlazadas de dos vías. Cada nodo tiene dos enlaces: uno apunta al nodo anterior, o apunta al valor NULL o a la lista vacía si es el primer nodo; y otro que apunta al siguiente nodo siguiente, o apunta al valor NULL o a la lista vacía si es el último nodo.

edu.red

Una lista doblemente enlazada contiene tres valores: el valor, el link al nodo siguiente, y el link al anterior

En algún lenguaje de muy bajo nivel, ofrece una vía para implementar listas doblemente enlazadas, usando una sola palabra para ambos enlaces, aunque el uso de esta técnica no se suele utilizar.

Listas enlazadas circulares

En una lista enlazada circular, el primer y el último nodo están unidos juntos. Esto se puede hacer tanto para listas enlazadas simples como para las doblemente enlazadas. Para recorrer un lista enlazada circular podemos empezar por cualquier nodo y seguir la lista en cualquier dirección hasta que se regrese hasta el nodo original. Desde otro punto de vista, las listas enlazadas circulares pueden ser vistas como listas sin comienzo ni fin. Este tipo de listas es el más usado para dirigir buffers para "ingerir" datos, y para visitar todos los nodos de una lista a partir de uno dado.

edu.red

Una lista enlazada circular que contiene tres valores enteros

Listas enlazadas circulares simples

Cada nodo tiene un enlace, similar al de las listas enlazadas simples, excepto que el siguiente nodo del último apunta al primero. Como en una lista enlazada simple, los nuevos nodos pueden ser solo eficientemente insertados después de uno que ya tengamos referenciado. Por esta razón, es usual quedarse con una referencia solamente al último elemento en una lista enlazada circular simple, esto nos permite rápidas inserciones al principio, y también permite accesos al primer nodo desde el puntero del último nodo.

Lista Enlazada Doblemente Circular

En una lista enlazada doblemente circular, cada nodo tiene dos enlaces, similares a los de la lista doblemente enlazada, excepto que el enlace anterior del primer nodo apunta al último y el enlace siguiente del último nodo, apunta al primero. Como en una lista doblemente enlazada, las inserciones y eliminaciones pueden ser hechas desde cualquier punto con acceso a algún nodo cercano. Aunque estructuralmente una lista circular doblemente enlazada no tiene ni principio ni fin, un puntero de acceso externo puede establecer el nodo apuntado que está en la cabeza o al nodo cola, y así mantener el orden tan bien como en una lista doblemente enlazada.

Nodos Centinelas

A veces las listas enlazadas tienen un nodo centinela (también llamado falso nodo o nodo ficticio) al principio y/o al final de la lista, el cual no es usado para guardar datos. Su propósito es simplificar o agilizar algunas operaciones, asegurando que cualquier nodo tiene otro anterior o posterior, y que toda la lista (incluso alguna que no contenga datos) siempre tenga un "primer y último" nodo.

3. FORMS

FORM 1

edu.red

En esta forma es donde se tiene acceso al programa (usando el botón entrar), mediante un nombre de usuario y contraseña definida.

Si no se pone el nombre de usuario y la contraseña correcta aparece un cuadro que muestra que tienes un error.

Por ultimo se usa un botón para salir del programa.

FORM 2

edu.red

Esta forma es donde se captura y se guardan los datos de los clientes, donde se pide datos de los clientes, también existe un botón con el que podemos eliminar los registros guardados.

Tiene un botón para ver las habitaciones con las que cuenta el hotel, en otro se usa para borrar los datos que no se usan.

FORM 3

edu.red

En esta forma vemos la galería de foto que por medio de dos botones que un botón pues se va de la primera foto hasta la ultima y te manda un mensaje de que esa es la ultima foto de la galería y el siguiente botón va de la ultima foto hacia la primera y cuando llega a la primera te manda un mensaje de que esa es la primer foto de la galería y el ultimo botón que se observa es para poder regresar al menú anterior que viene siendo la FORM 2

4. CODIGO DEL PROGRAMA

FORM 1

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace WindowsApplication3

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void textBox2_TextChanged(object sender, EventArgs e)

{

}

private void button1_Click(object sender, EventArgs e)

{

if (textBox1.Text.ToLower() == "uni" && textBox2.Text.ToLower() == "kino")

{

this.DialogResult = DialogResult.OK;

this.Hide();

Form troll = new Form2();

troll.ShowDialog();

}

else

{

MessageBox.Show("INTENTE DE NUEVO", "ERROR");

textBox1.Text = "";

textBox2.Text = "";

}

}

private void button2_Click(object sender, EventArgs e)

{

Application.Exit();

}

}

}

FORM 2

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace WindowsApplication3

{

public partial class Form2 : Form

{

private int i = 0;

private bool encontrado;

private DataGridViewCell dgc0, dgc1, dgc2, dgc3;

private string eliminar;

public Form2()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

try

{

//textBox2.Text = "";

if (i > 10)

{

MessageBox.Show("Arreglo Esta LLeno ", "Mensaje");

//label2.Text = "Arreglo Esta Vacio";

}

else

{

groupBox1.Visible = true;

dataGridView1.Visible = false;

}

}

catch (Exception error)

{

MessageBox.Show(" NO SE PUEDE " + error);

}

}

private void button4_Click(object sender, EventArgs e)

{

i++;

dataGridView1.Rows.Add(i.ToString(), textBox1.Text, textBox2.Text, textBox3.Text,textBox5.Text);

groupBox1.Visible = false;

dataGridView1.Visible = true;

textBox1.Text = "";

textBox2.Text = "";

textBox3.Text = "";

}

private void button2_Click(object sender, EventArgs e)

{

}

private void button2_Click_1(object sender, EventArgs e)

{

encontrado = false;

try

{

eliminar = textBox4.Text;

for (int j = 0; j < dataGridView1.Rows.Count; j++)

{

dgc1 = dataGridView1.Rows[j].Cells[0];

if (dgc1.Value.ToString() == eliminar.ToString())

{

if (MessageBox.Show("¿desea eliminar el registro " + dgc1.Value.ToString() + ", esta seguro?", "borrar"

, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)

{

dataGridView1.Rows.RemoveAt(dgc1.RowIndex);

}

encontrado = true;

}

}

if (!encontrado)

{

MessageBox.Show("Error el id indicado no se encuentra en la tabla", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

}

catch (Exception ea)

{

MessageBox.Show("Error escribe solo numeros:n" + ea, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

}

private void button3_Click(object sender, EventArgs e)

{

this.Hide();

Form troll = new Form3();

troll.ShowDialog();

}

private void button5_Click(object sender, EventArgs e)

{

Application.Exit();

}

}

}

FORM 3

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace WindowsApplication3

{

public partial class Form3 : Form

{

public Form3()

{

InitializeComponent();

}

int i = 0;

int l = 1;

string[] fotos = { "sencilla.jpg", "doble.jpg", "suite.jpg", "presidencial.jpg" };

private void pictureBox1_Click(object sender, EventArgs e)

{

}

private void button2_Click(object sender, EventArgs e)

{

if (i >= 1)

{

l–;

label1.Text = Convert.ToString(l);

i–;

pictureBox1.Image = Image.FromFile(fotos[i]);

}

else { MessageBox.Show("Error: Esa Es La Primera Foto de la Galeria"); }

}

private void button1_Click(object sender, EventArgs e)

{

if (i <= 2)

{

l++;

label1.Text = Convert.ToString(l);

i++;

pictureBox1.Image = Image.FromFile(fotos[i]);

}

else { MessageBox.Show("Error: Esa Fue La Ultima Foto de la Galeria"); }

}

private void button3_Click(object sender, EventArgs e)

{

this.Hide();

Form troll = new Form2();

troll.ShowDialog();

}

}

}

5. RESUMEN

Este proyecto trata sobre un hotel, el primer paso es donde se solicita el acceso mediante un nombre de usuario y una contraseña, si no se tiene la contraseña y el usuario, se refleja una ventana en donde aparece que tienes un error y que intentes de nuevo; si pones bien los datos con el botón de entrar te pasa a la siguiente ventana; en donde es para registrar en la tabla de datos al cliente que va llegando, se puede guardar y eliminar cuando tú desees, para pasar a la otra ventana existe un botón; en esta última ventana se muestran los tipos de habitaciones con las que cuenta el hotel, una vez que el cliente escoge la habitación se regresa a la forma anterior para llenar los datos del cliente.

6. REFERENCIAS

www.wikipedia.com

www.monografias.com

 

 

Autor:

Efraín Estrada

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente