using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication7
{
public unsafe class Program
{
public struct Nodo
{
public string Nombre;
public int Valor;
public Nodo* siguiente;
}
static void Main(string[] args)
{
int op;
Nodo* Lista;
Lista = null;
while (true)
{
Console.Clear();
Console.WriteLine("1.-Ingresar Datos");
Console.WriteLine("2.-Eliminar Datos");
Console.WriteLine("3.-Mostrar Datos");
Console.WriteLine("4.-Salir");
Console.Write("Ingresa Opcion:");
op = int.Parse(Console.ReadLine());
Console.Clear();
if (op == 1)
{
Console.Write("Ingresa Edad:");
int v = int.Parse(Console.ReadLine());
Console.Write("Ingresa Nombre:");
string nom = Console.ReadLine();
Nodo* anterior;
//Se crea un nodo llamado Q
//y se le asigna espacio en memoria
Nodo* nuevo = stackalloc Nodo[1];
nuevo->Valor = v;
nuevo->Nombre = nom;
if (Lista == null)
{
nuevo->siguiente = Lista;
Lista = nuevo;
}
else
{
anterior = Lista;
while (anterior->siguiente != null)
{
anterior = anterior->siguiente;
}
nuevo->siguiente = anterior->siguiente;
anterior->siguiente = nuevo;
}
}
else if (op == 2)
{
Nodo* Q;
Nodo* T=stackalloc Nodo[1];
if (Lista == null)
Console.WriteLine("Lista Vacia");
else
{
if (Lista->siguiente == null)
Lista = null;
else
{
Q = Lista;
while (Q->siguiente != null)
{
T = Q;
Q = Q->siguiente;
}
T->siguiente = null;
//free(Q);//Como hago esto en el C#
//como libero memoria
}
Console.WriteLine("Dato Eliminado");
}
}
else if (op == 3)
{
Nodo* nodo;
if (Lista == null)
Console.WriteLine("Lista Vacia");
else
{
nodo = Lista;
while (nodo != null)
{
Console.Write("{0},{1}->", nodo->Valor,nodo->Nombre);
nodo = nodo->siguiente;
}
}
}
else if (op == 4)
System.Environment.Exit(0);
string z = Console.ReadLine();
}
}
}
}