A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yllogininbh 中级黑马   /  2014-6-1 14:46  /  1184 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 yllogininbh 于 2014-6-2 19:03 编辑

我觉得c#的引用类型几乎就是指针,所以自己模拟写了一个list集合。
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;

  6. namespace zhizheng
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {

  12.             mylistImplament lis = new mylistImplament();
  13.             lis.add(new myStruct() { value="hhhhh 1"});
  14.             lis.add(new myStruct() { value = "sdf 2" });
  15.             lis.add(new myStruct() { value = "sd34543f 3" });
  16.             lis.add(new myStruct() { value = "hhgfgfghhh 4" });

  17.             Console.Write(lis);

  18.             Console.WriteLine("--------------------------");
  19.             lis.remove(new myStruct() { value = "hhgfgfghhh 4" });
  20.             Console.Write(lis);
  21.             Console.Read();
  22.         }
  23.     }
  24.     public interface mylist
  25.     {

  26.           void add(myStruct s1);
  27.           myStruct remove(myStruct checkValue);
  28.         
  29.     }
  30.     public class myStruct
  31.     {
  32.         public string value = string.Empty;
  33.         public myStruct  next=null;

  34.     }
  35.     public class mylistImplament:mylist
  36.     {

  37.         myStruct head;
  38.         myStruct pNow;
  39.         myStruct plast;
  40.         public void add(myStruct addValue)
  41.         {
  42.             if (head == null)
  43.             {
  44.                 head = addValue;
  45.                 pNow = addValue;
  46.             }
  47.             else
  48.             {
  49.                plast =pNow;
  50.                pNow = addValue;
  51.                plast.next = pNow;

  52.             }

  53.         }

  54.         public myStruct remove(myStruct checkValue)
  55.         {
  56.             if (head != null)
  57.             {
  58.                 pNow = head;
  59.                 plast = pNow;

  60.                 while (!pNow.value.Equals(checkValue.value)&&pNow.next!=null)
  61.                 {
  62.                     plast = pNow;
  63.                     if(pNow.next!=null)
  64.                     pNow = pNow.next;

  65.                 }
  66.                 //第一个值为删除目标
  67.                 if (plast.value.Equals( pNow.value))
  68.                 {
  69.                     head = pNow.next;
  70.                     return pNow;
  71.                 }
  72.                 //最后一个值为删除目标
  73.                 else if (pNow.next == null)
  74.                 {
  75.                     plast.next = null;
  76.                     return pNow;
  77.                 }
  78.                 else
  79.                 {
  80.                     plast.next = pNow.next;
  81.                     return pNow;
  82.                 }




  83.             }
  84.             else
  85.                 return null;



  86.         }



  87.         public override string ToString()
  88.         {
  89.             StringBuilder sb = new StringBuilder();
  90.             if (head == null)
  91.                 return "";
  92.             else
  93.             {
  94.                 pNow = head;
  95.                 sb.Append(pNow.value + "\r\n");
  96.               
  97.               while (pNow.next != null)
  98.               {
  99.                   pNow = pNow.next;
  100.                   sb.Append(pNow.value+"\r\n");


  101.               }
  102.               return sb.ToString();


  103.             }
  104.         }
  105.     }


  106. }
复制代码
看吧c#的引用型和指针的用法几乎一样

点评

不错哦  发表于 2014-6-1 23:27

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

2 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马