publicclassSingleLinkedList{publicSingleLinkDataFirstNode;publicintlength;//初始化链表,也就是首节点为空。publicvoidInitiate(){FirstNode=null;}//求链表的长度,做循环,当最...
public class SingleLinkedList {
public SingleLinkData FirstNode;
public int length;
//初始化链表,也就是首节点为空。
public void Initiate()
{
FirstNode = null;
}
//求链表的长度,做循环,当最后一个元素的值为空时为止。
public void Length()
{
length = 0;
SingleLinkData CurrentNode = FirstNode ;
while(CurrentNode != null )
{
CurrentNode = CurrentNode.NextNode;
length++;
}
}
//添加一个元素
public void Add(int datavalue)
{
//定义当前插入的为当前节点。
SingleLinkData CurrentNode=null;
if(length==0)
{
//链表为空时,让第一个节点记住插入的值,然后赋值给当前节点
FirstNode.data=datavalue;
CurrentNode = FirstNode;
}
//当链表不为空时。
if(length!=0)
{
//CNIndex当前节点的位置。
int CNIndex=0;
CurrentNode=FirstNode;
//新插入的节点
SingleLinkData NewNode=null;
//记录住次节点的值
NewNode.data=datavalue;
while(CurrentNode!=null)
{
CNIndex++;
CurrentNode=CurrentNode.NextNode;
if(CNIndex==length-1)
{
CurrentNode.NextNode=NewNode;
}
}
}
length++;
}
//在某个位置插入一个节点
public void Insert(int Index,int datavalue )
{
SingleLinkData NewNode = null;
NewNode.data = datavalue;
SingleLinkData CurrentNode = FirstNode;
if(Index<1 && Index>length+1)
{
return ;
}
int CNIndex=0;
while(CurrentNode!=null)
{
CNIndex++;
CurrentNode=CurrentNode.NextNode;
if(CNIndex==Index-1)
{
NewNode.NextNode=CurrentNode.NextNode;
CurrentNode.NextNode = NewNode;
}
}
length++;
}
//在某个位置删除一个节点。
public void Delete(int Index)
{
SingleLinkData CurrentNode = FirstNode;
if(Index<1 && Index>length)
{
return ;
}
int CNIndex=0;
while(CurrentNode!=null)
{
CNIndex++;
CurrentNode=CurrentNode.NextNode;
if(CNIndex==Index-1)
{
CurrentNode.NextNode = CurrentNode.NextNode.NextNode;
}
}
length--;
}
//链表的历遍
public void Traverse()
{
int i =0;
SingleLinkData CurrentNode = FirstNode;
while(CurrentNode!=null)
{
i++;
System.out.println("第"+i+"个元素为"+CurrentNode);
CurrentNode=CurrentNode.NextNode;
}
}
}
//自己构造节点类型,在这里我真的是不怎么懂,到底怎么构造,
//在方法里面的参数和方法外面的参数是什么关系。
class SingleLinkData
{
public SingleLinkData (int data){
Data = data;
NextNode = null;
}
public int Data;
public SingleLinkData NextNode;
}
我不是很会写代码,这个是我们现在学的内容,我就不知道我是那里错了,语法都是对的。
请大家帮忙仔细斟酌下,谢谢了。
展开