Sie sind auf Seite 1von 17

Estructura de Datos APU 2008 Ejemplos en C# 1) Muestra por pantalla el cartel Hola Mundo class HolaMundo { static void

d Main() { System.Console.WriteLine("Hola Mundo!"); } } 2) Muestra por pantalla el cartel Hola Mundo utilizando una variable del tipo string: class HolaMundo { static void Main() { string var = "Mundo"; System.Console.WriteLine("Hola {0}!", var); } } 3) Muestra por pantalla el cartel Hola Mundo utilizando una variable del tipo string y realize la suma de dos nmeros enteros. using System; namespace Programa1 { class HolaMundo { static void Main() { string var="Mundo"; System.Console.WriteLine ("Hola {0}!", var); int num1 = 1; int num2 = 3; int resultado = Suma (num1, num2); System.Console.WriteLine ("{0}+{1} = {2}", num1, num2, resultado); } static int Suma(int valor1, int valor2) { return (valor1+valor2); } } } El resultado es el siguiente: Hola Mundo! 1 +3=4 4) Muestra por pantalla los segundos que tiene un da y un ao. using System; class Enteros { public static void Main() { int minuto = 60; int hora = minuto * 60; int dia = hora * 24; long anio = dia * 365; Ing. Nlida Cceres- 2010

//segundos por minuto

Estructura de Datos APU 2008 Console.WriteLine("Un dia tiene {0} segundos; un ao dia, anio); } } 5) Calcula la raz cuadrada y el logaritmo del nmero dos. using System; class Flotante { public static void Main() { int a = 2; double log2 = Math.Log(a); double raiz2 = Math.Sqrt(a); Console.WriteLine("El logaritmo de dos es {0}", log2); Console.WriteLine("La raiz de dos es {0}", raiz2); } } El resultado es el siguiente: El logaritmo de dos es 0.693147180559945 La raz de dos es 1.4142135623731 Nota: Si se intenta cambiar el tipo del identificador log2 a otro de menos precisin, como float o int, el compilador mostrar inconvenientes. Esto se debe a que el valor que devuelve Math.Log() es de tipo double y si se quiere convertir a float se perdern datos. Lo mismo ocurre con la mayora de los miembros de la clase Math, como Math.Sin(), Math.Tan() entre otros. 6) Muestra el valor de una variable del tipo lgica (estructura condicional if). using System; class Booleano { public static void Main() { bool b; b = true; Console.WriteLine("b es {0}", b); if (b) { Console.WriteLine("Mensaje por verdadero:"); } b = false; if (b) { Console.WriteLine("Mensaje por Falso:"); } Console.WriteLine("2==2 es {0}", 2 == 2); } } Nota: El operador "==" tambin devuelve un valor booleano. El resultado es: b es True Mensaje por Verdadero: 2==2 es Trae 7) Calcula un nmero Fibonacci. /// <summary> /// Calcula fibonacci dado un nmero /// f(0) = f(1) = 1 Ing. Nlida Cceres- 2010 2 {1} segundos",

Estructura de Datos APU 2008 /// f(n) = f(n-1) + f(n-2) /// </summary> /// <param name="pNumero">Nmero de la posicin q ocupa en fibonacci</param> using System; namespace Fibonacci { class Metodo { public int CalcularFibonacci(int pNumero) { if ((pNumero == 0) || (pNumero == 1)) return 1; else return CalcularFibonacci(pNumero - 1) + CalcularFibonacci(pNumero - 2); } } class Principal { public static void Main() { int Numero = 6; Metodo m = new Metodo(); int Resultado = m.CalcularFibonacci(Numero); Console.WriteLine("el termino de fibo {0} es {1}", Numero, Resultado); } } } 8) Array unidimensional que muestra los valores contenidos en un vector dada una posicin. using System; class Arreglo1 { public static void Main() { int[] vector = new int[3]; vector[0] = 1; vector[1] = 2; vector[2] = 3; Console.WriteLine(vector[1]); } } Nota: Los arreglos (vectores o arrays) son sucesiones de datos del mismo tipo. Por ejemplo, el concepto matemtico de vector es una sucesin de nmeros y se representa como un arreglo unidimensional. Se puede construir arreglos de objetos, de cadenas de texto y de enteros: 9) Array bidimensional que muestra los valores contenidos en una matriz dada una posicin. using System; class Arreglo2 { public static void Main() { int[,] mat = new int[2, 2]; mat [0, 0] = 1; mat [1, 0] = 2; mat [0, 1] = 3;

// se puede reemplazar por // int[] vector = {1,2,3};

// se puede reemplazar por // int[,] arr = {{1,2},{3,4}};

Ing. Nlida Cceres- 2010

Estructura de Datos APU 2008 mat [1, 1] = 4; Console.WriteLine("El valor que posee la variable arr[1,1] es {0}", mat [1, 1]); } } El resultado es: El valor que posee la variable mat[1,1] es 4 10) Realiza varios clculos de variables enteras.

using System; class operadoresMatematicos { public static void Main() { int a = 7; int b = 4; int c = a + b; int d = a - b; int e = a * b; int f = a / b; int g = a % b; Console.WriteLine ("De los nmeros: {0} y {1} la suma es: {2}, la resta es: {3}, la multiplicacin es: {4}, la divisin es: {5}, el mdulo es: {6}", a, b, c, d, e, f, g ); } } 11) Muestra mensajes e intervienen llamadas a otros mtodos (saltos incondicionales).

using System; namespace Ejemplos { class Mensajes { static void Main() { Console.WriteLine("Esta parte se ejecuta primero"); LlamadaOtraFuncion(); Console.WriteLine("Esta parte se ejecuta al final"); } static void LlamadaOtraFuncion() { Console.WriteLine("Ha salido del mtodo Main()"); } } } Nota: El programa ejecuta sentencia por sentencia el mtodo principal Main() hasta que encuentra la llamada a otro mtodo. Luego que el mtodo llamado (LlamadaOtraFuncion() ) finalice, el mtodo Main continuar ejecutando las sentencias restantes. 12) Muestra mensajes e intervienen una condicin para ejecutar cdigo (saltos condicionales, estructura if-else). using System; class InstruccionIf { public static void Main() { double d;

Ing. Nlida Cceres- 2010

Estructura de Datos APU 2008 Console.WriteLine("Ingrese un numero"); d = Double.Parse(Console.ReadLine()); if (d == 0) { Console.WriteLine("El numero ingresado {0} es cero", d); } else { if (d > 0) { Console.WriteLine("El numero ingresado {0} es positivo", d); } else { Console.WriteLine("El numero ingresado {0} es negativo", d); } } } } Nota: Console.ReadLine() permite leer lo que el usuario ingresa por pantalla (una cadena de caracteres) y Double.Parse interpreta la cadena de caracteres ingresada y la convierte en un tipo numrico double.

13) Muestra mensajes e intervienen una condicin para ejecutar cdigo (saltos condicionales, estructura if-else). using System; class IfElseIf { public static void Main() { string opcion; Console.WriteLine("Elija una opcin (si/no)"); opcion = Console.ReadLine(); if (opcion == "si") { Console.WriteLine("La opcin elegida es SI"); } else { if (opcion == "no") { Console.WriteLine("La opcin elegida es NO"); } else { Console.WriteLine("La opcin no es vlida...!!"); } } } } Nota: Si ninguna de las instrucciones es true se ejecutar la ltima instruccin else, en el caso que no exista esta instruccin else al final y el resto de de las condiciones son falsas no se realizar ninguna accin 14) Realiza un clculo, y muestra el resultado por pantalla (estructura de seleccin switch)

using System; class InstruccionSwitch {

Ing. Nlida Cceres- 2010

Estructura de Datos APU 2008 public static void Main() { string s; Console.WriteLine("Seleccione una operacin matemtica para los nmeros 2 y 3"); Console.WriteLine(" + Suma"); Console.WriteLine(" - Resta"); Console.WriteLine(" * Multiplicacin"); Console.WriteLine(" / Division entera"); s = Console.ReadLine(); switch (s) { case "+": Console.WriteLine("El resultado es {0}", 2 + 3); break; case "-": Console.WriteLine("El resultado es {0}", 2 - 3); break; case "*": Console.WriteLine("El resultado es {0}", 2 * 3); break; case "/": Console.WriteLine("El resultado es {0}", 2 / 3); break; default: Console.WriteLine("Opcin incorrecta"); break; } } } Por pantalla se muestra lo siguiente: Selecciones una operacin matemtica para los nmeros 2 y 3 +Suma - Resta * Multiplicacin / Divisin entera) * El resultado es 6 Nota: El usuario ingresa uno de los smbolos +-*/ , y con un switch se selecciona la accin a realizar. Al final de todo switch siempre hay una sentencia break. Esto no es obligatorio, puede haber en su lugar otra sentencia de salto como un goto inclusive en el caso default. Siempre se deber tener un break o un goto en cada caso a menos que la sentencia est vaca. En esta situacin se ejecutar el siguiente caso que viene en la lista. Si no se realizan estas consideraciones se obtiene un error en tiempo de compilacin. 15) Muestra por pantalla los primeros 10 nmeros positivos, includo el cero (estructura for).

using System; class BucleFor { public static void Main() { int i; //el contador // for( inicializacin; condicin; iteracin ) for (i = 0; i < 10; i++) { Console.WriteLine(i); } } } Ing. Nlida Cceres- 2010 6

Estructura de Datos APU 2008 Nota: Las sentencias de inicializacin se ejecutan una vez al principio y sirven principalmente para asignar valores a las variables que servirn de contador. Las sentencias de condicin se ejecutan cada vez que el bucle vuelve al principio y controlan el bucle (contina ejecutndose siempre que sea true). Las sentencias de iteracin se ejecutan cada vez que se realiza un nuevo ciclo en el bucle, y sirven para cambiar el estado de las variables que gobiernan las sentencias de condicin (el operador ++ incrementa en una unidad a la variable en cada vuelta del for). Se pueden utilizar 2 variables para controlar el bucle: using System; class BucleFor2 { public static void Main() { int i; int j; for (i = 0, j = 10; i < j; i++, j--) { Console.WriteLine("( {0} , {1} )", i, j); } } } 16) Muestra por pantalla los primeros 10 nmeros positivos, includo el cero (estructura while).

using System; class BucleWhile { public static void Main() { int i = 0; while (i < 10) { Console.WriteLine(i); i = i + 1; } } }

// while( condicin )

Nota: El bucle while se ejecuta hasta que se cumpla una determinada condicin, donde la condicin tiene que ser un valor booleano. 17) Solicita el ingreso de una cadena para salir del programa (estructura do-while).

using System; class BucleDoWhile { public static void Main() { string s = ""; do { Console.WriteLine("Ingrese exit para salir del bucle"); s = Console.ReadLine(); } while (s != "exit"); // while( condicin ) } } Nota: Esta estructura es una variante del bucle while, primero se ejecutan las instrucciones y luego se evala la condicin.

Ing. Nlida Cceres- 2010

Estructura de Datos APU 2008 18) Muestra por pantalla los valores de un vector y de una matriz (estructura foreach).

using System; class ForeachArray { public static void Main() { int[,] vector = { { 1, 2 }, { 2, 3 } }; // foreach( tipo de dato identificador in coleccion ) foreach (int elem in vector) { Console.WriteLine("Numero {0}", elem); } } } Nota: El bucle foreach se utiliza para hacer iteraciones sobre elementos de una coleccin, como pueden ser los enteros dentro de un arreglo de enteros. Se puede utilizar el bucle foreach con cualquier tipo que sea una coleccin (no solo con arreglos). using System; class ForeachMatriz { public static void Main() { int i, j; // ndices de la matriz (fila y columna) int[,] matriz = { { 2, 4 }, { 8, 10 } }; for (i = 0; i < 2; i++) { for (j = 0; j < 2; j++) { Console.WriteLine(matriz[i, j]); } } } } 19) Muestra por pantalla los primeros 10 nmeros positivos (estructura for con sentencias continue y break). using System; class continueBreak { public static void Main() { for (int i = 0; i < 10; i++) { if (i == 5) continue; if (i == 9) break; Console.Write("{0},", i); } } } El resultado ser el siguiente (no se muestra el nro 5 y termina cuando llega al nmero. 9): 0,1,2,3,4,6,7,8, Nota: las palabras Continue y Break permiten saltar incondicionalmente al inicio de un bucle (continue) o fuera de un bucle (break) cuando sea necesario. El bucle for determina que la variable i tome los valores del 1 al 10, pero cuando llega al nmero 5 el bucle salta incondicionalmente al inicio del bucle sin Ing. Nlida Cceres- 2010 8

Estructura de Datos APU 2008 ejecutar las lneas que siguen ms adelante, por lo que no ejecutar la lnea que muestra por pantalla el nmero 5. Cuando i es igual al nmero 9 el bucle ser detenido por el salto incondicional break que rompe el bucle. 20) Muestra por pantalla el resultado de una suma utilizando llamada a mtodos.

using System; public class Suma { static int CalcularSuma() { int PrimerNumero = 10; int SegundoNumero = 5; int Suma = PrimerNumero + SegundoNumero; return Suma; } public static void Main() { int resultado = CalcularSuma(); Console.WriteLine("La suma es {0}.", resultado); } } El resultado es el siguiente: La suma es 15 21) Muestra por pantalla el resultado de una divisin utilizando llamada a mtodos.

using System; class Metodo { public double Divide(double a, double b) { return a / b; } } class Principal { public static void Main() { Metodo m = new Metodo(); Console.WriteLine(m.Divide(8, 2)); } } Nota: Para llamar al mtodo Divide(8,2) se debe colocar el nombre del mtodo y sus argumentos dentro de un parntesis separado por comas. El mtodo Divide() completo necesita tener una clase donde definirse y un mtodo Main() donde ejecutarse. 22) Muestra por pantalla el valor de una variable utilizando llamada a mtodos (parmetros pasados por valor). using System; class Prueba1 { static void F(int p) { p++; Console.WriteLine("p = {0}", p); } static void Main() { Ing. Nlida Cceres- 2010 9

Estructura de Datos APU 2008 int a = 1; Console.WriteLine("pre: a = {0}", a); F(a); Console.WriteLine("post: a = {0}", a); } } El resultado es el siguiente: pre: a = 1 p=2 post: a = 1 Nota: cuando se pasa un parmetro por valor a una funcin, se est pasando una copia del parmetro, por lo tanto, las modificaciones que se le realicen al parmetro dentro del mtodo no afectarn al parmetro original. En el ejemplo se asigna el valor 1 a la variable a, se escribe ese valor, luego se lo pasa como parmetro de la funcin F en donde se incrementa en uno la variable y se la muestra, finalmente se muestra el valor de la variable a, donde mantiene su valor original. 23) Muestra por pantalla dos variables, sus valores originales y modificados (parmetros pasados por referencia). using System; class Test { static void Intercambio(ref int a, ref int b) // intercambia 2 valores { int t = a; a = b; b = t; } static void Main() { int x = 1; int y = 2; Console.WriteLine("pre: x = {0}, y = {1}", x, y); Intercambio(ref x, ref y); Console.WriteLine("post: x = {0}, y = {1}", x, y); } } El resultado es el siguiente: pre: x = 1, y = 2 post: x = 2, y = 1 Nota: Cuando se utilizan parmetros pasados por referencia no se realiza ninguna copia del objeto, sino que lo que se le pasa a la funcin es una referencia del objeto, de forma que el parmetro pasa directamente a la funcin y cualquier modificacin sobre el parmetro dentro de la funcin afectar al parmetro original. En el ejemplo se asignan valores enteros a las variables x, y ; luego se muestran esos valores, se pasan al mtodo Intercambio las dos variables (por referencia). Los valores retornan de ste mtodo modificados. 24) Muestra por pantalla los datos de dos personas (utiliza clases).

using System; public class Persona { public string nombre; public int edad; public double altura; public void Informacion() { Ing. Nlida Cceres- 2010 10

Estructura de Datos APU 2008 Console.WriteLine("Nombre: {0}", nombre); Console.WriteLine("Edad: {0} aos", edad); Console.WriteLine("Altura: {0}cm", altura); } } public class Programa { public static void Main() { Persona primeraPersona = new Persona(); Persona segundaPersona = new Persona(); primeraPersona.nombre = "Jack"; primeraPersona.edad = 21; primeraPersona.altura = 160; primeraPersona.Informacion(); Console.WriteLine(); segundaPersona.nombre = "Mike"; segundaPersona.edad = 23; segundaPersona.altura = 158; segundaPersona.Informacion(); } } El resultado es: Nombre: Jack Edad: 21 aos Altura: 160cm Nombre: Mike Edad: 23 aos Altura: 158cm Nota: El programa contiene dos clases: Persona y Programa. La clase Programa contiene el mtodo principal. Dentro de la clase se definen tres atributos, una persona tiene un nombre, edad, y altura y se define un mtodo dentro de la clase denominado informacin. Se debe declarar una instancia de una clase, para ello se utiliza new Persona (). Observar que los atributos de la clase, en este caso, fueron declarados como pblicos, primeraPersona.Informacion () muestra la informacin de la primera persona, antes de llamar al mtodo, los campos del mtodo deben contener un valor, caso contrario se producir un error (NullReferenceException). 25) Muestra por pantalla los datos de dos personas (utiliza clases y constructores).

using System; public class Persona { public string nombre; public int edad; public double altura; // Se declara a un constructor predefinido public Persona() { } // Se declara un constructor que tiene 3 parmetros public Persona(string n, int a, double h) { nombre = n; edad = a; altura = h; } public void MostrarInformacion() { Console.WriteLine("Nombre: {0}", nombre); Ing. Nlida Cceres- 2010 11

Estructura de Datos APU 2008 Console.WriteLine("Edad: {0} aos", edad); Console.WriteLine("Altura: {0}cm", altura); } } public class Programa { public static void Main() { Persona primeraPersona = new Persona(); Persona segundaPersona = new Persona("Mike", 23, 158); primeraPersona.nombre = "Jack"; primeraPersona.edad = 21; primeraPersona.altura = 160; primeraPersona.MostrarInformacion(); Console.WriteLine(); segundaPersona.MostrarInformacion(); } } Nota: Los constructores son mtodos especiales que crean a los objetos. Permiten asignar los valores iniciales para cada elemento de una serie de datos y agregar cdigo que se desee ejecutar cuando se crea un objeto. Si no se incluye a cualquier constructor en una clase, entonces el compilador utilizar un constructor predefinido que es un constructor que no tiene ningn parmetro. En el primer caso de persona, se utiliza un constructor predefinido porque no hay ningn argumento dentro de los parntesis. En la segunda declaracin, se utiliza el constructor al que se proporcionan los tres argumentos que el parmetro del constructor est esperando. El objeto que utiliz al constructor predefinido le exige que asigne los valores para que puede mostrar algo si se utiliza el mtodo MostrarInformacion(). El segundo objeto que utiliz el constructor con parmetros, cuando llama al mtodo se ejecuta sin problemas. 26) Muestra la edad de una persona y un trabajador antes y luego de ser incrementada (utiliza herencia de clases). using System; class Persona { public string Nombre; // Campo de cada objeto Persona que almacena un nombre public int Edad; // Campo de cada objeto Persona que almacena una edad public string DNI; // Campo de cada objeto Persona que almacena un DNI public virtual void Cumpleaos() // Incrementa en uno de la edad de Persona { Edad++; Console.WriteLine("Incrementada edad de persona"); } public virtual void MostrarInformacion() { Console.WriteLine("* * Datos de la Persona * *"); Console.WriteLine("Nombre: {0}", Nombre); Console.WriteLine("Edad: {0} aos", Edad); Console.WriteLine("DNI: {0}", DNI); } // Constructor de Persona public Persona (string nombre, int edad, string dni) { Nombre = nombre; Edad = edad; DNI = dni; } }

Ing. Nlida Cceres- 2010

12

Estructura de Datos APU 2008 class Trabajador: Persona { public int Sueldo; // Campo de cada objeto Trabajador que almacena un sueldo Trabajador(string nombre, int edad, string dni, int sueldo): base(nombre, edad, dni) { // Se inicializa cada Trabajador en base al constructor de Persona Sueldo = sueldo; } public override void Cumpleaos() { Edad++; Console.WriteLine("Incrementada edad de trabajador"); } public override void MostrarInformacion() { Console.WriteLine("* * Datos del Trabajador * *"); Console.WriteLine("Nombre: {0}", Nombre); Console.WriteLine("Edad: {0} aos", Edad); Console.WriteLine("DNI: {0}", DNI); Console.WriteLine("Sueldo: $ {0}", Sueldo); } public static void Main() { Persona p = new Persona("Carlos", 22, "31.123.456"); Trabajador t = new Trabajador("Juan", 37, "23.456.789", 3500); p.MostrarInformacion(); t.MostrarInformacion(); t.Cumpleaos(); p.Cumpleaos(); Console.WriteLine("===> Los datos luego de ser modificados son: "); p.MostrarInformacion(); t.MostrarInformacion(); } } 27) Lista por pantalla nmeros enteros (se utiliza ArrayList)

using System; using System.Collections; namespace ArrayListNumeros { class Numero { static void Main(string[] args) { ArrayList Num = new ArrayList(); Num.Add(8); Mostrar(Num); Num.Add(4); Mostrar(Num); Num.Add(12); Mostrar(Num); Num.Add(20); Mostrar(Num); Console.WriteLine("Inserta el nro 14 en la posicin 2)"); Num.Insert(1, 14); Mostrar(Num); Console.WriteLine("Saca el elemento igual a 12"); Num.Remove(12); Mostrar(Num); } Ing. Nlida Cceres- 2010 13

Estructura de Datos APU 2008 private static void Mostrar(ArrayList alN) { Console.WriteLine("ArrayList : "); foreach (object o in alN) { Console.Write("{0,4}", o.ToString()); Console.WriteLine(); } } } } 28) Lista por pantalla nombres de personas(se utiliza ArrayList)

using System; using System.Collections; namespace ArrayListNombres { class Persona { static void Main() { ArrayList nombre = new ArrayList(); nombre.Add("Mike"); nombre.Add("Monica"); nombre.Add("Raymond"); nombre.Add("Jennifer"); Console.WriteLine("La lista original de nombres es: "); foreach (Object nom in nombre) Console.WriteLine(nom); Console.WriteLine(); string[] nuevoNombre = new string[] {"David", "Michael"}; ArrayList masNombres = new ArrayList(); masNombres.Add("Terrill"); masNombres.Add("Clayton"); masNombres.Add("Alisa"); nombre.InsertRange(0, nuevoNombre); nombre.AddRange(masNombres); Console.WriteLine("La nueva lista de nombres es: "); foreach (Object nom in nombre) Console.WriteLine(nom); } } } La salida del programa es: David Michael Mike Monica Raymond Jennifer Terrill Clayton Alisa 29) Muestra por pantalla la capacidad y tamao actual de un ArrayList del tipo cadena.

using System; using System.Collections;

Ing. Nlida Cceres- 2010

14

Estructura de Datos APU 2008 class Cadena { static void Main() { ArrayList cadena = new ArrayList (); cadena.Add("Hola1"); cadena.Add("Hola2"); cadena.Add("Hola3"); cadena.Add("Hola4"); cadena.Add("Hola5"); Console.WriteLine("Tamao: " + cadena.Count); Console.WriteLine("Capacidad: " + cadena.Capacity); cadena.Remove("Hola1"); Console.WriteLine("Tamao despus de eliminar el 1 elemento: " + cadena.Count); Console.WriteLine("Capacidad despus de eliminar el 1 elemento: " + cadena.Capacity); } } Nota: En un array de datos no es posible aumentar la capacidad del vector ya que dicho parmetro es especificado en el momento de crear la instancia del objeto. El ArrayList proporciona la posibilidad de aumentar o disminuir su tamao dinmicamente segn sea necesario. Para crear una instancia de este objeto, se debe utilizar la clase ArrayList incluida en el espacio de nombre System.Collections. 30) Implementacin de pila con ArrayList (slo declaracin de atributos y mtodos)

using System; using System.Collections; class Pila { private int cima; private ArrayList datos; public Pila() { cima = (-1); datos = new ArrayList(); } public bool pilaVacia() { return (datos.Count == 0); } public void meterPila(Object unElemento) { datos.Add(unElemento); cima = cima + 1; } public Object sacarPila() { Object obj = datos[cima]; datos.RemoveAt(cima); cima = cima - 1; return obj; } public Object consultarCima() { return datos[cima]; } } Nota: Se define el ArrayList como contenedor para apilar los elementos y la cima se representa con una variable entera. Esta variable se coloca inicialmente en -1, cada vez que un nuevo elemento se agrega Ing. Nlida Cceres- 2010 15

Estructura de Datos APU 2008 en la pila la variable se incrementa en 1. El mtodo constructor inicializa el ndice en -1. Cuando se agrega un elemento en la pila, se debe pasar un argumento al ArrayList. Para eliminar un elemento de la pila se realizan tres cosas: se elimina el objeto de la cima de la pila, se decrementa el ndice en 1 y se devuelve el objeto sacado de la pila. Tambin se puede ver el elemento que se encuentra en la cima de la pila. 31) Implementacin de cola con ArrayList (slo declaracin de atributos y mtodos)

using System; using System.Collections; using System.Text; namespace Cola { class Cola { private ArrayList elementos; public Cola() { elementos = new ArrayList(); } public void EnColar(Object unElemento) { elementos.Add(unElemento); } public Object DesEncolar() { Object sacado = elementos[0]; elementos.RemoveAt(0); return sacado; } public bool ColaVacia() { return elementos.Count == 0; } public Object DevolverFrente() { return elementos[0]; } } } 32) Crea una pila y una cola de nmeros enteros y realiza las operaciones de agregar y quitar objetos considerando las caractersticas de cada estructura. using System; using System.Collections; namespace PilasyColas { class PC { static void Main() { Console.WriteLine("\nNmeros pares en la Pila:\n"); PC.Pila(); Console.WriteLine("\nNmeros impares en la Cola:\n"); PC.Cola(); return; } //Funcin que utiliza pilas static void Pila() { Stack numbers = new Stack();

Ing. Nlida Cceres- 2010

16

Estructura de Datos APU 2008 foreach (int number in new int[4] { 4, 8, 12, 16 }) { numbers.Push(number); Console.WriteLine(number + " se ha puesto en la pila"); } foreach (int number in numbers) { Console.WriteLine(number); } while (numbers.Count != 0) { int number = (int)numbers.Pop(); Console.WriteLine(number + " se ha quitado de la pila"); } Console.WriteLine("La pila est vaca..."); return; } //Funcion que utiliza Colas static void Cola() { Queue numbers = new Queue(); foreach (int number in new int[3] { 7, 9, 13}) { numbers.Enqueue(number); Console.WriteLine(number + " se ha puesto en la cola"); } foreach (int number in numbers) { Console.WriteLine(number); } while (numbers.Count != 0) { int number = (int)numbers.Dequeue(); Console.WriteLine(number + " se ha quitado de la cola"); } Console.WriteLine("La cola est vaca..."); return; } } }

Referencias Data Structures and Algorithms Using C# - Michael Mc Millan El lenguaje de programacin C# - Jos Antonio Gonzlez Seco http://www.csharp-station.com/Tutorial.aspx Ing. Nlida Cceres- 2010 17

Das könnte Ihnen auch gefallen