这个就是定义一个泛型类LinkedList,做一个针对(整型数据和Student类型数据)的链表
Student类型已在开头定义好 ,Node就是针对链表中的节点进行一些操作,LinkedList就是调用Node中的一些方法再加上自己的方法实现链表的功能,一下是代码。
我的问题代码在后面提出。
[C#] 纯文本查看 复制代码 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GenericSamp
{
public class Student
{
private string StudentName;
private int StudentAge;
public Student(string name, int age)
{
this.StudentName = name;
this.StudentAge = age;
}
public override string ToString()
{
return this.StudentName + ":年龄" + this.StudentAge + "岁";
}
}
public class Node<T>
{
T data;
Node<T> next;
public Node(T data)
{
this.data=data;
this.next=null;
}
public T Data{
get {return this.data;}
set{data=value;}
}
public Node<T> Next{
get{return this.next;}
set{this.next=value;}
}
public void Append(Node<T> newNode){
if(this.next==null){this.next=newNode;}
else{next.Append(newNode);}
}
public override string ToString(){
string output=data.ToString();
if(next!=null){output+=","+next.ToString();}
return output;
}
}
public class LinkedList<T>
{
Node<T> headNode = null;
public void Add(T data)
{
if (headNode == null)
{
headNode = new Node<T>(data);
}
else
{
headNode.Append(new Node<T>(data));
}
}
public T this[int index]
{
get
{
int temp = 0;
Node<T> node = headNode;
while (node != null && temp <= index)
{
if (temp == index)
{
return node.Data;
}
else
{
node = node.Next;
}
temp++;
}
return default(T);
}
}
public override string ToString()
{
if (this.headNode != null)
{
return this.headNode.ToString;
}
else
{
return string.Empty;
}
}
}
class Program
{
static void Main(string[] args)
{
LinkedList<int> intList=new LinkedList<int>();
for (int i = 0; i < 5; i++)
{
intList.Add(i);
}
Console.WriteLine("整型List的内容为:" + intList);
LinkedList<Student> StudentList = new LinkedList<Student>();
StudentList.Add(new Student("张三",20));
StudentList.Add(new Student("李四",22));
StudentList.Add(new Student("王五",21));
Console.WriteLine("Student类型List的内容为:" + StudentList);
}
}
}
第一个问题:在LinkedList泛型那段中的一个方法public T this[int index],这段代码如何实现的对LinkedList数组中的每一个元素赋值,求详细分析过程。
第二个问题:在Node类和LinkedList类定义的时候,最后都重载了一个Tostring方法,有什么作用,想用这个来干什么,去掉了又什么影响,为什么。
问题可能不好回答,还是求大神帮忙了
|