根据定义,链表是一个列表,它的每个元素都指向下一个元素(如果我们谈论的是双向链表,也可以是前一个元素) 。
然而,在Java语言中,LinkedList实现了List、Queue、Deque等等。
在LinkedList中找不到提供列表中下一个或上一个对象的方法,最好的方法是获取迭代器和对象。我的问题是,为什么Java将这种数据结构称为LinkedList,而它并不是真正的链表?链表可以在Java中实现,如下所示:
Public class MyLinkedList{
public int value;
public MyLinkedList next;
}
我遇到了两种实现双向链表的方法:
#define LIST_ENTRY(type) \
struct { \
struct type *le_next; /* next element */ \
struct type **le_prev; /* address of previous next element */ \
}
这种方法是在FreeBsd queue.h中实现的,我想知道为什么它使用指针指向le_prev
struct li
在第11章:书的访问类型:Rendez-vous with Ada by Naiditch (1995)中,奈迪奇给出了一个相当完整的例子,说明了如何创建一个包含餐厅信息的链表。我在很大程度上理解了书中的例子的数据结构。我可以理解,用户在链表中输入的任何信息都将只存在于程序的生命周期中。作者没有将任何关于餐厅的信息存储为文本文件。那么,如果用户输入的所有信息在用户退出程序后都没有存储,那么链表示例还有什么用呢?
将用户输入的信息存储在文本文件中,然后将其读取到链表中,以便对它们进行进一步的操作,这有意义吗?但是,执行诸如添加或删除条目之类的操作将干扰最初从其读取链表的原始文本文件。
谢谢。
P
例如,我的讲师说过,在使用链表进行操作时,不要释放任何内存,并删除指针。此外,他说,在对双向链表进行操作时,应该确保边缘情况是正确的。有没有人可以对此进行扩展?我不确定我完全明白他的意思。
例如,这是我们正在处理的链表类型:
struct Node {
Node *next;
Node *prev;
T datum;
};
Node *first; // points to first Node in list, or 0 if list is empty
Node *last; // points to last Node