gpt4 book ai didi

c - 在不使用 if 的情况下添加到链表的尾部

转载 作者:太空狗 更新时间:2023-10-29 15:29:56 25 4
gpt4 key购买 nike

这是一个面试问题,我想我会与大家分享。

How does one efficiently add to the tail of a linked list without using an "if"?

从此函数中删除 if。 (? 仍然是一个 if)。

typedef struct tNode_ tNode;

struct tNode_ {
tNode* pNext;
int data;
};

tNode* pHead = NULL;
tNode* pTail = NULL;

AddTail(tNode* pNode){
if(!pTail) {
pHead = pNode;
}
else {
pTail->pNext = pNode;
}
pTail = pNode;
pTail->pNext = NULL;
}

最佳答案

一种(公认的愚蠢)方法是使用短路逻辑运算符 &&|| 的行为。例如,您可以这样做:

  AddTail(tNode* pNode){
pTail || (pHead = pNode);
!pTail || (pTail->pNext = pNode);

pTail = pNode;
pTail->pNext = NULL;
}

这是有效的,因为如果 ptail 为 null,则第一条语句的第一部分将评估为 false,从而强制评估 || 语句的后半部分。如果它非空,则不会评估语句的后半部分。类似的逻辑适用于下一条语句。

也就是说,这是一个非常愚蠢的面试问题,老实说,我不知道他们在说什么。就个人而言,我会质疑有人试图评估您编写这样的代码的能力是否明智。

希望这对您有所帮助!

关于c - 在不使用 if 的情况下添加到链表的尾部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14116075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com