c#来实现一个简单的链表

学了一年的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做一个留言系统或者贴吧之类的系统是不是可以采用这样的数据结构呢?你也来试试……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值