【发布时间】:2017-10-08 11:56:46
【问题描述】:
一个新的链表中的奇数元素被移除。 我发现这项任务非常复杂,如果您能帮助修复或改进我的代码,我会很高兴。 到目前为止,这是我所做的:
typedef struct list{
int data;
struct list* next;
} List;
List* removeOddValues(List** source)
{
List* curr= source;
List* prev;
List* odd= NULL;
while (curr)
{
if ((curr->data)%2!=0)
{
insertNodeToEnd(&odd, curr->data);
prev->next = curr->next;
}
else
{
prev = curr;
curr= curr->next;
}
}
return odd;
}
List* createNewNode(int newData, List* next)
{
List* newNode = (List)calloc(1, sizeof(List));
newNode->data = newData;
newNode->next = next;
return newNode;
}
void insertNodeToEnd(List** list, type newData)
{
LNode* newNode = createNewNode(newData, NULL);
list->next= newNode;
}
【问题讨论】:
-
为什么在 args 中使用 List** 而不是 List* ?
-
... removeOddValues(List** source) { List* curr= source;应该引发编译器警告。节省时间,启用所有编译器警告。
标签: c function linked-list