Ejercicios Propuestos-3
Ejercicios Propuestos-3
Ejercicios Propuestos-3
Using System;
Using System.Collections.Generic;
Using System.ComponentModel;
Using System.Data;
Using System.Drawing;
Using System.Text;
Using System.Windows.Forms;
Namespace WindowsApplication1
{
Public partial class Insercion: Form
{
Public Insercion ()
{
InitializeComponent ();
}
Private void cdmInserta_Click(object sender, EventArgs e)
{
String elemento = txtInser.Text;
txtInser.Clear();
If (Listas.disponible == -999)
{
MessageBox.Show ("Lista llena", "Error", MessageBoxButtons.OK);
}
else
{
Int anterior = -999;
Int ptr = Listas.comienzo;
Int i = 0, nuevo;
Nuevo = Listas.disponible;
bool aux = false;
Listas.disponible = Listas.enlace[nuevo];
Listas.alumno[nuevo] = elemento;
while (ptr != -999 && aux == false)
{
If (Listas.alumno [ptr].Length < elemento.Length)
{
i = Listas.alumno [Listas.comienzo].Length;
}
Else
{
i = elemento.Length;
}
int h = 0;
for (h=0; h < i; h++)
{
If (Listas.alumno [ptr][h] == elemento[h])
{
}
If (Listas.alumno [ptr][h] < elemento[h])
{ Anterior = ptr;
h = i;
}
else
{
h = i;
Aux = true;
}
}
ptr = Listas.enlace [ptr];
}
If (anterior == -999)
{
Listas.enlace [nuevo] = Listas.comienzo;
Listas.comienzo = nuevo;
}
Else
{
Listas.enlace [nuevo] = Listas.enlace [anterior];
Listas.enlace [anterior] = nuevo;
}
button1.Text = "Cerrar";
}
}
Private void button1_Click (object sender, EventArgs e)
{
this.Hide ();
}
}
}
2. Realice un método recursivo que dadas dos listas ordenadas
ascendentemente, la mezcle generando una nueva lista ordenada
descendentemente.
/**
* Clase que define las operaciones básicas que debe tener una lista
* circular simple.
* @author xavier
*/
/**
*/
inicio = null;
ultimo = null;
tamanio = 0;
/**
*/
/**
*/
return tamanio;
/**
*/
nuevo.setValor(valor);
if (esVacia()) {
inicio = nuevo;
ultimo = nuevo;
ultimo.setSiguiente(inicio);
} else{
ultimo.setSiguiente(nuevo);
nuevo.setSiguiente(inicio);
// la variable ultimo.
ultimo = nuevo;
tamanio++;
}
/**
*/
nuevo.setValor(valor);
if (esVacia()) {
inicio = nuevo;
ultimo = nuevo;
ultimo.setSiguiente(inicio);
} else{
nuevo.setSiguiente(inicio);
inicio = nuevo;
tamanio++;
/**
* Inserta un nuevo nodo despues de otro, ubicado por el valor que contiene.
*/
nuevo.setValor(valor);
if (!esVacia()) {
if (buscar(referencia)) {
aux = aux.getSiguiente();
}
if (aux == ultimo) {
aux.setSiguiente(nuevo);
nuevo.setSiguiente(inicio);
// la variable ultimo.
ultimo = nuevo;
} else {
aux.setSiguiente(nuevo);
nuevo.setSiguiente(siguiente);
tamanio++;
/**
* Inserta un nuevo nodo despues en una posición determinada.
*/
nuevo.setValor(valor);
if(posicion == 0){
nuevo.setSiguiente(inicio);
inicio = nuevo;
ultimo.setSiguiente(inicio);
else{
if(posicion == tamanio){
ultimo.setSiguiente(nuevo);
// Apuntamos con el nuevo nodo al inicio de la lista.
nuevo.setSiguiente(inicio);
// la variable ultimo.
ultimo = nuevo;
else{
aux = aux.getSiguiente();
aux.setSiguiente(nuevo);
nuevo.setSiguiente(siguiente);
/**
* @throws Exception
*/
if (posicion == 0) {
return inicio.getValor();
}else{
aux = aux.getSiguiente();
}
// Retorna el valor del nodo.
return aux.getValor();
} else {
/**
*/
do{
if (referencia == aux.getValor()){
else{
aux = aux.getSiguiente();
return encontrado;
/**
* @return un valor entero entre [0,n] que indica la posición del nodo.
* @throws Exception
*/
if (buscar(referencia)) {
int cont = 0;
// Incrementa el contador.
cont ++;
aux = aux.getSiguiente();
return cont;
} else {
/**
*/
if (buscar(referencia)) {
while(aux.getValor() != referencia){
aux = aux.getSiguiente();
aux.setValor(valor);
/**
* por su posición.
*/
if(posicion == 0){
inicio.setValor(valor);
else{
// En caso que el nodo a eliminar este por el medio
// o sea el ultimo
aux = aux.getSiguiente();
aux.setValor(valor);
/**
*/
if (buscar(referencia)) {
if (inicio.getValor() == referencia) {
inicio = inicio.getSiguiente();
// Apuntamos con el ultimo nodo de la lista al inicio.
ultimo.setSiguiente(inicio);
} else{
// al de referencia.
while(aux.getSiguiente().getValor() != referencia){
aux = aux.getSiguiente();
if (aux.getSiguiente() == ultimo) {
aux.setSiguiente(inicio);
ultimo = aux;
} else {
aux.setSiguiente(siguiente.getSiguiente());
tamanio--;
}
/**
* por su posición.
*/
if(posicion == 0){
inicio = inicio.getSiguiente();
ultimo.setSiguiente(inicio);
// o sea el ultimo
else{
aux = aux.getSiguiente();
if (aux.getSiguiente() == ultimo) {
aux.setSiguiente(inicio);
ultimo = aux;
} else {
aux.setSiguiente(siguiente.getSiguiente());
tamanio--;
/**
* Elimina la lista
*/
ultimo = null;
tamanio = 0;
/**
*/
if (!esVacia()) {
int i = 0;
System.out.print("-> ");
do{
aux = aux.getSiguiente();
}while(aux != inicio);
}
}
5. Defina un programa para implementar una estructura tipo cola mediante listas.
class Nodo {
int info;
Nodo sig;
Cola() {
raiz=null;
fondo=null;
return true;
else
return false;
Nodo nuevo;
nuevo.info = info;
nuevo.sig = null;
if (vacia ()) {
raiz = nuevo;
fondo = nuevo;
} else {
fondo.sig = nuevo;
fondo = nuevo;
int extraer ()
if (!vacia ())
{
if (raiz == fondo){
raiz = null;
fondo = null;
} else {
raiz = raiz.sig;
return informacion;
} else
return Integer.MAX_VALUE;
Nodo reco=raiz;
while (reco!=null) {
System.out.print(reco.info+"-");
reco=reco.sig;
System.out.println();
cola1.insertar(5);
cola1.insertar(10);
cola1.insertar(50);
cola1.imprimir();
cola1.imprimir();
}
}
6. Realice un método que elimine los elementos repetidos de una estructura tipo
cola implementada por medio de listas.
if (list2 != NULL) {
7. Defina un programa que elimine los elementos repetidos de una pila. Los
elementos repetidos ocupan posiciones sucesivas.
char[] arraycar={'p','a','j','a','r','r','a','c','o'};
String sCadenaSinBlancos="";
System.out.println(arraycar);
for(int i=0;i<arraycar.length;i++){
for(int j=0;j<arraycar.length-1;j++){
if(i!=j){
if(arraycar[i]==arraycar[j]){
arraycar[j]=' ';
cadena.eliminaEspacio(s,sCadenaSinBlancos);
}
}
8. Sea C una doble cola circular de 6 elementos. Inicialmente la doble cola está
vacía (FRENTE = FINAL =0). Dibuje el estado de la cola después de realizar
cada una de las siguientes operaciones:
a. Insertar por el extremo derecho tres elementos: A, B y C.
b. Eliminar por el extremo izquierdo un elemento.
c. Insertar por el extremo izquierdo dos elementos: D y E.
d. Eliminar por la derecha un elemento.