各位大哥,我写了一个泛型的链表类,这是其中的删除节点的函数,编译是没有错的,但是运行的时候没什么反应,删除也不成功,请问,哪里有问题?
public void deleteNode(T data)
{
if (head != null)
{
//如果链表只有一个元素
if ((head == tail) && (head.m_infor == data))
{
head = null;
tail = null;
}
//如果要删除的为头节点
else if (head.m_infor == data)
{
head = head.m_next;
}
else
{
CNode<T> preNode = head;
CNode<T> tmpNode = preNode.m_next;
while (tmpNode != null)
{
if (tmpNode.m_infor == data)
{
if (tmpNode == tail)//如果要删除的是尾节点
{
tail = preNode;
}
else
{
preNode.m_next = tmpNode.m_next;
}
}/* if */
else
{
preNode = tmpNode;
tmpNode = tmpNode.m_next;
}
}/* while */
}
}/* if */
}
public void deleteNode(T data)
{
if (head != null)
{
//如果链表只有一个元素
if ((head == tail) && (head.m_infor == data))
{
head = null;
tail = null;
}
//如果要删除的为头节点
else if (head.m_infor == data)
{
head = head.m_next;
}
else
{
CNode<T> preNode = head;
CNode<T> tmpNode = preNode.m_next;
while (tmpNode != null)
{
if (tmpNode.m_infor == data)
{
if (tmpNode == tail)//如果要删除的是尾节点
{
tail = preNode;
}
else
{
preNode.m_next = tmpNode.m_next;
}
}/* if */
else
{
preNode = tmpNode;
tmpNode = tmpNode.m_next;
}
}/* while */
}
}/* if */
}
弄个List不就ok了,直接remove
if (tmpNode.m_infor == data)如果我没说错的话,你的data是一个对象吧,java 1.5里面泛型可以这样判断对象相等吗? 看来我需要好好学习了