C#单向链表 实例代码
2015-08-12 15:02
519 查看
//链表类代码,主要包含新加内容,求大小,删除,插入
public
class LinkListClass
{
private
string sdata;
private
LinkListClass Head;
private
LinkListClass next;
public
LinkListClass()
{
Head=null;
next=null;
}
public
void Append(string item) //新增内容
{
LinkListClass p=new
LinkListClass();
p.sdata=item;
p.next=null;
if(Head==null)
{
Head=p;
}
else
{
LinkListClass q=new
LinkListClass();
q=Head;
while(q.next!=null)
{
q=q.next;
}
q.next=p;
}
}
public
int Length()
//求链表大小
{
int ilen=0;
LinkListClass p=new
LinkListClass();
p=Head;
while(p!=null)
{
ilen++;
p=p.next;
}
return ilen;
}
public
void Insert(string data,int index=0)
//按位置插入内容
{
LinkListClass p=new
LinkListClass();
p.sdata=data;
LinkListClass mybase=new
LinkListClass();
mybase=Head;
if(index==0)
{
Head=p;
p.next=mybase;
}
else
{
while(index-->0 && mybase.next!=null)
{
mybase=mybase.next;
}
p.next=mybase.next;
mybase.next=p;
}
}
public
bool Delete(int index)
// 按位置删除内容
{
if(this.Length()<index)
{
return
false;//out of range
}
if(index==0)
{
Head=Head.next;
return
true;
}
LinkListClass p=new
LinkListClass();
p=Head;
LinkListClass temp=new
LinkListClass();
while(index-->0 && p.next!=null)
{
temp=p;
p=p.next;
}
temp.next=p.next;
return
true;
}
public
string GetValue(int index)
//按位置查找值
{
if(this.Length()<index)
{
return
"OutOfRange";
}
else
{
LinkListClass p=new
LinkListClass();
p=Head;
while(index-->0)
{
p=p.next;
}
return p.sdata;
}
}
public
void Clear()
// 清空链表
{
Head=null;
}
}
//使用代码示例:
LinkListClass Mylinklist=new
LinkListClass();
Mylinklist.Append("c");
Mylinklist.Append("d");
Mylinklist.Insert("E");
Mylinklist.Insert("F",3);
Mylinklist.Insert("H",30);
string buff=Mylinklist.GetValue(3);
Mylinklist.Delete(2);
Mylinklist.Delete(Mylinklist.Length());
public
class LinkListClass
{
private
string sdata;
private
LinkListClass Head;
private
LinkListClass next;
public
LinkListClass()
{
Head=null;
next=null;
}
public
void Append(string item) //新增内容
{
LinkListClass p=new
LinkListClass();
p.sdata=item;
p.next=null;
if(Head==null)
{
Head=p;
}
else
{
LinkListClass q=new
LinkListClass();
q=Head;
while(q.next!=null)
{
q=q.next;
}
q.next=p;
}
}
public
int Length()
//求链表大小
{
int ilen=0;
LinkListClass p=new
LinkListClass();
p=Head;
while(p!=null)
{
ilen++;
p=p.next;
}
return ilen;
}
public
void Insert(string data,int index=0)
//按位置插入内容
{
LinkListClass p=new
LinkListClass();
p.sdata=data;
LinkListClass mybase=new
LinkListClass();
mybase=Head;
if(index==0)
{
Head=p;
p.next=mybase;
}
else
{
while(index-->0 && mybase.next!=null)
{
mybase=mybase.next;
}
p.next=mybase.next;
mybase.next=p;
}
}
public
bool Delete(int index)
// 按位置删除内容
{
if(this.Length()<index)
{
return
false;//out of range
}
if(index==0)
{
Head=Head.next;
return
true;
}
LinkListClass p=new
LinkListClass();
p=Head;
LinkListClass temp=new
LinkListClass();
while(index-->0 && p.next!=null)
{
temp=p;
p=p.next;
}
temp.next=p.next;
return
true;
}
public
string GetValue(int index)
//按位置查找值
{
if(this.Length()<index)
{
return
"OutOfRange";
}
else
{
LinkListClass p=new
LinkListClass();
p=Head;
while(index-->0)
{
p=p.next;
}
return p.sdata;
}
}
public
void Clear()
// 清空链表
{
Head=null;
}
}
//使用代码示例:
LinkListClass Mylinklist=new
LinkListClass();
Mylinklist.Append("c");
Mylinklist.Append("d");
Mylinklist.Insert("E");
Mylinklist.Insert("F",3);
Mylinklist.Insert("H",30);
string buff=Mylinklist.GetValue(3);
Mylinklist.Delete(2);
Mylinklist.Delete(Mylinklist.Length());
相关文章推荐
- C# Excel ColorIndex 对应列表
- C#判断密码强度的方法
- c#之编码解码
- C#操作注册表
- c# byte转化为string
- C# class and struct
- c#解析XML文件来获得pascal_voc特定目标负样本
- 总结C#保留小数位数
- C#中的委托和事件(续)
- C# 中的委托和事件
- C#实现Ping的方法小结
- C#实现xml文件的读取与写入简单实例
- C#实现将数据导出到word或者Excel中的方法
- C#异步方法的使用
- *****c#中的委托和事件
- C#学习If-else
- C#操作Excel文件
- c#params ref out
- c#params ref out
- C#学习第四天