【发布时间】:2018-09-02 08:03:52
【问题描述】:
假设您有一个链接列表,并且您想要制作不同的副本并向该列表添加许多元素,但您不知道数量。每个链接列表必须有不同的地址改变。链表:
struct path {
int node;
struct path *next;
};
每次我将链表的起始地址发送给函数时,函数会在另一个地址复制链表,并在链表的末尾添加值(多次) .
我实现了以下代码以在链表上创建和添加新元素:
/* Head and Tail for Linked Lists */
struct path *pathHead = NULL;
struct path *pathTail = NULL;
void newPathElement(int node) {
struct path *rv = malloc(sizeof (struct path));
rv->node = node;
if (pathHead == NULL) {
pathHead = rv;
pathHead -> next = NULL;
pathTail = pathHead;
} else {
pathTail -> next = rv;
pathTail = rv;
pathTail -> next = NULL;
}
}
注意我想制作链表的不同副本。每个副本都有其头部和尾部,每个副本的列表都会有所不同。
函数签名如下:
struct path *copyPath(struct path *head, struct path *tail, int node){
}
【问题讨论】:
-
创建一个新的空链表。循环遍历您的第一个链表,并将每个元素添加到新链表中。
-
StackOverflow 不是免费的编码服务。所以希望你try to solve your own problem first。请更新您的问题以在minimal reproducible example 中显示您已经尝试过的内容。如需更多信息,请参阅How to Ask,并拨打tour :)
-
@Barmar 我知道,但我需要帮助。我不知道该怎么做。如何创造新的?与:
struct path *newPath = Null -
@SaeedRahmani 你能从头开始创建一个简单的列表,例如包含 3 个节点吗?
-
第一个链表是如何创建的?以同样的方式创建新的链表。
标签: c list linked-list copy singly-linked-list