繁体   English   中英

即使我多次运行程序,如何只初始化一次双向链接列表?

[英]How can I initialize a Doubly Linked List only once even if I run the program multiple times?

我有一个存储名称的双向链表,通过多次运行程序(根据我在终端中编写的参数),我可以从中添加/删除名称、显示名称等。

第一次运行程序(假设添加一个名称,因为没有要删除或显示的名称),它创建双向链表,并使用 size=0 和 back=front=NULL 对其进行初始化。

我的主要问题是,当我第二次运行该程序时,它会创建一个新的双向链表,丢失指向先前创建的列表的指针,并且自然会丢失添加到列表中的第一个名称。

有什么方法可以让我的程序知道已经创建了一个列表,并在我第二次、第三次、第四次等时间运行它并使用该列表进行下一步操作之后将列表的指针指向它?

我不认为添加代码是必要的,但如果需要,请告诉我更新我的帖子。

数据必须在外部存储中持久化,以便程序读取和写入。 通过将其称为外部,我们指的是磁盘,而不是指定给进程的 memory 空间。 您可以让程序打开文件并记录任何结构化数据。 当程序再次运行时,它会探测以创建下一个名称节点。

Since you are using the ubuntu tag, you can use POSIX named shared memory to achieve it: https://www.man7.org/linux/man-pages/man7/shm_overview.7.html . 您可能需要一些指针技巧才能使其工作。

但是,对于您的持久性用例,如果您不想触摸磁盘,我会 go 将它们存储在文件中,在 tmpfs 中。 您将需要与 POSIX 共享 memory 相同的指针技巧,具有更高的可移植性并且更容易推理。

你应该有 2 个类,DLList class 应该管理计数/大小、指向开始/结束的指针、添加/删除的函数。 节点列表是显而易见的。 在主程序中,您首先创建一个空的 DLList class。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM