学了一年的c#语法了,但是关于用c#来实现的数据结构却很少接触,近日闲来无事于是用c#来实现一个简单的链表,和大家一起分享
using System;
using System.Collections.Generic;
using System.Text;
namespace href_table
{
class Program
{
static void Main(string[] args)
{
lytable admin = new lytable();
Console.WriteLine("现在要创建一个链表");
lytable linetable = admin.create();
Console.WriteLine();
Console.WriteLine("现在要打印这个链表");
admin.print(linetable);
Console.WriteLine();
Console.WriteLine("现在要删除一个节点");
Console.WriteLine();
Console.Write("请输入你要删除的用户:");
string user = Console.ReadLine();
admin.del(linetable,user);
Console.WriteLine();
Console.WriteLine("现在要打印这个链表");
admin.print(linetable);
while (int.Parse(Console.ReadLine())!=0)
{
Console.WriteLine();
Console.WriteLine("现在要插入一个节点");
lytable insert = new lytable();//创建一个节点
Console.Write("请输入一个节点的ID");
insert.id = int.Parse(Console.ReadLine());
Console.WriteLine();
Console.WriteLine("请输入用户的姓名");
insert.username = Console.ReadLine();
Console.WriteLine();
Console.WriteLine("请输入用户的留言");
insert.lynr = Console.ReadLine();
admin.insert(linetable, insert);
Console.WriteLine();
}
Console.WriteLine("现在要打印这个链表");
admin.print(linetable);
Console.ReadLine();
}
}
class lytable
{
public string username;
public string lynr;
public lytable next;
public int id=10;
public lytable create()//创建一个链表
{
int n =10;
lytable head,p1, p2;
p1 = new lytable();
p2 = p1;
Console.Write("请输入呢称:");
p1.username=Console.ReadLine();
Console.WriteLine();
Console.Write("请输入你的留言:");
p1.lynr = Console.ReadLine();
Console.WriteLine();
head = null;
while (p1.username != "exit")
{
n = n + 1;
if (n == 11)
head = p1;
else
p2.next = p1;
p2 = p1;
p1 = new lytable();
Console.Write("请输入呢称:");
p1.username = Console.ReadLine();
Console.WriteLine();
Console.Write("请输入你的留言:");
p1.lynr = Console.ReadLine();
p1.id = n;
Console.WriteLine();
}
p2.next = null;
return head;
}
public void print(lytable head)//现在要打印这个链表
{
lytable p3;
p3 = head;
while (p3!=null)
{
Console.Write("呢称:");
Console.WriteLine(p3.username);
Console.Write("留言:");
Console.WriteLine(p3.lynr);
Console.Write("ID:");
Console.WriteLine(p3.id);
p3 = p3.next;
}
}
public void del( lytable head, string user)//删除一个节点
{
lytable p4, p5;
p5 = null;
p4 = head;
if (p4 == null)
{
Console.WriteLine();
Console.WriteLine("这是一个空链表");
}
else
{
while (p4.username != user && p4.next != null)
{
p5 = p4;
p4 = p4.next;
}
if (p4.next == null)
{
Console.WriteLine("不好意思,没有找到相应的节点");
}
if (p4.username == user)
{
if (p4 == head)
{
head = p4.next;
}
else
{
p5.next = p4.next;
}
Console.WriteLine();
Console.WriteLine("删除的用户为:{0}",p4.username);
}
}
}
public void insert(lytable head,lytable buff)//插入一个链表
{
lytable p6, p7, p8;
p6 = head;
p7 = buff;
p8 = null;
if (p6 == null)
{
Console.WriteLine("这是一个空的链表");
p6 = p7;
p6.next = null;
}
else
{
while (p7.id > p6.id && p6.next != null)
{
p8 = p6;
p6 = p6.next;
}
if (p7.id <= p6.id)
{
if (p6 == head)
{
p7.next = p6.next;
head = p7;
}
else
{
p8.next = p7;
p7.next = p6;
}
}
else
{
p6.next = p7;
p7.next = null;
}
}
}
}
}
那么当我们在用asp.net做一个留言系统或者贴吧之类的系统是不是可以采用这样的数据结构呢?你也来试试……
c#来实现一个简单的链表
最新推荐文章于 2024-02-28 15:50:56 发布