【发布时间】:2015-10-01 03:51:01
【问题描述】:
我正在尝试过滤链接列表。由于我不想更改原始链表,因此我想创建一个子链表并返回它。
我遇到了麻烦,因为我只知道如何从过滤过程中获取 1 个节点,但我不知道如何移动并将节点从原始链表添加到子链表。
我有一个这样的结构(这表示哈希表中的一个条目):
typedef struct Entry {
char *word;
int len;
struct Entry *next;
} Entry;
我的过滤函数将接收单词长度和原始链表作为参数,然后查找具有相同 len 值的节点。每当它找到一个具有相同 len 值的节点时,它就会将该节点添加到另一个链表中。最后返回新的链表。
struct Entry* filterLen(int len, struct Entry *en) {
struct Entry *temp = (struct Entry *)malloc(sizeof(struct Entry));
while(en->next != NULL) {
if (en->len == len) {
// assign values to temp list
temp->word = en->word;
temp->len = en->len;
temp->next = en;
}
en = en->next; // move through list
}
return temp;
}
【问题讨论】:
-
问题出在哪里?
-
你已经有了旧的链表,所以大概你也已经有了将条目添加到链表的通用代码。因此,使用该代码将新的克隆条目添加到 new 链接列表。
标签: c linked-list hashtable