你不需要自己写吧
有一个ArrayList类
你可以用的
有一个ArrayList类
你可以用的
解决方案 »
- winform 安装部署
- VS2010制作C#程序安装包问题……
- c#如何隐藏一个窗体同时在同一个位置显示另一个窗体
- 急急急急高手进
- VS2005安装问题 在线等 急~!!
- C# 獲取cmd執行成功的代碼
- 在 .net 1.1 下写的ASP.NET程序,在既装有 1.1 版本,又有 2.0 版本的机器上运行有问题?
- 关于Session_Start
- 如何改变提示信息的外观、字体颜色?如将它变成圆形、红色。
- 簡單問題﹐真不知怎么搞的。。。
- 如何使用visual studio.net打开web服务器上project?
- asp.net难道不能import system.windows.forms名称空间吗?
{
Item tt=new Item();
tt=t;
Item k=head;
while (k.Next==null)
k=k.Next;
tt.Next=k.Next;
k.Next=tt;
count++;
}
public void Delete(int t)
{
if (t>count)
return;
Item tt=head;
Item kk;
for (int i=0;i<t-1;i++)
tt=tt.Next;
kk=tt.Next;
kk=tt.Next;
tt.Next=kk;
}
{
Item tt=new Item();
tt=t;
Item k=head;
while (k.Next==null) //这个while一定要用吗?可以可以在每次添加的时候记录下最后一个节点然后直接添加。这样的话要是有好多节点就会慢很多
k=k.Next;
tt.Next=k.Next;
k.Next=tt;
count++;
}
{ //因为temp是头节点所以用temp.Next
if (count == 0)
end = head;
end.Next = new Item(); //创建一个新的节点把他放到最后节点的后面
end = end.Next ; //把end指向新节点的头部
temp = end;
end.Text = text; //节点的Index从0开始
end.Next = null;
count++; //整个链表的节点数加一
return temp;
} public Item Item(int index)
{
if (index < 0 || index > count) //如果index<0 或大于链表节点的总数,则返回
return null;
Item tmp = head.Next ; //把第一个节点给tmp
for (int i= 0; i<index;i++)
{
tmp=tmp.Next; //下移一个节点
}
return tmp;
}
public void Remove(int index) //删除指定位置的节点
{
if (index < 0 || index > count) //如果index<0 或大于链表节点的总数,则返回
return;
Item tmp = head; //把第一个节点给tmp
for (int i = 0;i < index-1;i++)
tmp = tmp.Next;
Item tmp1 = tmp;
tmp1=tmp1.Next ;
tmp1=tmp1.Next;
tmp.Next =tmp1;
count--; //如果当前节点的index
return ;//我先添加10个界点 }
//我删除 a.Remove(2);删除到剩一个节点
//然后我在添加10各界点
//当我在显示的时候就会报错,我到底那里错了呀
//这是我显示节点的代码
listBox1.Items.Clear();
int j=a.Count ;
for (int i =0 ; i<j ;i++)
listBox1.Items.Add (a.Item(i).Text);
namespace List
{
/// <summary>
/// Summary description for ListNode.
/// </summary>
// 结点类
public class ListNode
{
public ListNode(int NewValue)
{
Value=NewValue;
}
/// <summary>
/// 前一个
/// </summary>
public ListNode Previous;
/// <summary>
/// 后一个
/// </summary>
public ListNode Next;
/// <summary>
/// 值
/// </summary>
public int Value;
}
public class Clist
{
protected ListNode Head; //头结点
protected ListNode p; //当前结点
protected int ListLen;
public Clist()
{
Head=null;
p=null;
ListLen=0;
}
~Clist(){}
/*public ListNode DestoryList()
{
}*/
/// <summary>
/// 是否在链头
/// </summary>
public bool IsBof()
{
if (Head==p)
{
return true;
}
return false;
}
/// <summary>
///是否在链尾
/// </summary>
public bool IsEof()
{
if(p.Next==null)
return true;
return false;
}
/// <summary>
/// 清空链表
/// </summary>
public void ClearList()
{
Head=null;
p=null;
ListLen=0;
return;
}
/// <summary>
/// 链表是否为空
/// </summary>
public bool ListEmpty()
{
if(ListLen==0)
return true;
return false;
} /// <summary>
/// 链表长度
/// </summary>
public int ListLength
{
get{return ListLen;}
}
/// <summary>
/// 指针后移
/// </summary>
public void MoveNext()
{
if(!IsEof())
{
p=p.Next;
}
return;
}
/// <summary>
/// 指针前移
/// </summary>
public void MovePrev()
{
if(!IsBof())p=p.Previous;
return;
}
/// <summary>
/// 指针移到表头
/// </summary>
public void MoveFirst()
{
p=Head;
return;
}
/// <summary>
/// 返回指定位置结点的值
/// </summary>
public int GetElem(int i)
{
ListNode move;
if(!ListEmpty() && i>=1 && i<=ListLength)
{
int j;
move=Head;
for(j=1;j<i;j++)
//while(move!=null)
{
move=move.Next;
}
return move.Value;
}
return 0;
}
//public int PriorElem(ListNode ThisList,int cur_e){}
//public int NextElem(ListNode ThisList,int cur_e){}
/// <summary>
/// 添加新结点
/// </summary>
public void AppendNode(int e)
{
ListNode NewNode=new ListNode(e);
if(ListEmpty())
{
Head=NewNode;
p=NewNode;
}
else
{
p.Next=NewNode;
NewNode.Previous=p;
p=NewNode;
}
ListLen++;
return;
}
/// <summary>
/// 前插结点
/// </summary>
public void ListInsert(int i,int e)
{
ListNode NewNode=new ListNode(e);
ListNode q;
ListNode move;
int j;
if(!ListEmpty() && i>=1 && i<=ListLength)
{
if(i==1)
{
Head.Previous =NewNode;
NewNode.Next =Head;
Head=NewNode;
p=NewNode;
ListLen++;
}
else
{
move=Head;
for(j=1;j<i;j++)
//while(move.Next!=null)
{
move=move.Next;
}
q=move.Previous;
NewNode.Next =move;
move.Previous =NewNode;
q.Next =NewNode;
NewNode.Previous =q;
move=NewNode;
p=NewNode;
ListLen++;
}
}
else
{
Head=NewNode;
p=NewNode;
}
return; }
/// <summary>
/// 删除指定位置的结点
/// </summary>
public void ListDelete(int i)
{
ListNode q;
int j;
if(!ListEmpty() && i>=1 && i<=ListLength)
{
if(i==1)
{
q=Head.Next;
q.Previous =null;
Head.Next=null;
Head=q;
}
else
{
if(i<ListLength)
{
MoveFirst();
for(j=1;j<=i;j++)
MoveNext();
q=p.Next;
q.Previous =p.Previous;
p.Previous.Next=q;
p=q;
}
else
{
MoveFirst();
for(j=1;j<=i;j++)
MoveNext();
q=p.Previous ;
q.Next=null;
p=q;
}
}
ListLen--;
}
}
/// <summary>
/// 判断链表中是否存在e
/// </summary>
public bool Isin(int e)
{
bool bl=false;
ListNode move;
int i;
move=Head;
while(move!=null)
//for(i=1;i<=ListLength;i++)
{
if(move.Value==e)
{
bl=true;
break;
}
else
{
move=move.Next;
}
}
return bl;
}
public string PrintList()
{
ListNode move;
string strtext="";
move=Head;
while(move!=null)
{
strtext=strtext + move.Value.ToString() + ",";
move=move.Next;
}
return strtext;
} }
}