我正在用C语言写一个基于双向链表的代码。我错误地认为通过执行free(head_node)来删除头节点。我可以看到随着运行的进行,计算机变慢了(这显然是由于内存泄漏)。我搜索了stackoverflow和其他站点,我通常会遇到这样的代码来删除链表:
Node* current = head;
while( current != NULL ) {
Node* next = current->Next;
free( current );
current = next;
}
当我在我的代码中尝试这样做时,程序只是在free语句之后挂起,而不是返回到调用这个语句的函数。上面的代码是否与双向链表相
我想实现:
public Object getPrevious(); and reset() method.
*它应该使用与getNext()相同的内部维护指针返回,*通过getNext()或getPrevious()返回紧接在最后返回的项之前的列表中节点的内容*
reset将重置列表,以便getPrevious()和getNext()从头开始,也就是说,它的行为应该像我们从未调用过这些方法一样。
在单个链表中。我已经实现了:
public int length();
public Object first();
public Object last();
public boolean loo
所以现在的挑战是尝试使用一个LinkedList L,并创建一个与L相反的新的LinkedList反转。我需要用一个forloop来完成这项工作。这就是我到目前为止所知道的:
public void ReverseL(Intco obj) {
ListNode p = obj.c;
ListNode RevL = c;
int index = obj.get_howmany();
if (obj.c != null) {
while (this.get_howmany() != obj.get_howmany()) {
p
我已经写了一个带有添加和遍历方法的单链表的小程序。现在我想把它转换成一个双向链表。我知道双向链表的所有概念,但在我的程序中实现它并不是很困难。
public class SingleLinkList<T> {
private Node<T> head;
private Node<T> tail;
public void add(T element)
{
Node<T> nd = new Node<T>();
nd.setValue(element);
if (head==null)
{