Singly linked list 插入和插入之间的差异;删除带有sentinel节点的单链接列表
我们的任务是为带有哨兵节点的单链表编码插入(L,k)和删除(L,k)函数。我的问题是:Singly linked list 插入和插入之间的差异;删除带有sentinel节点的单链接列表,singly-linked-list,pseudocode,Singly Linked List,Pseudocode,我们的任务是为带有哨兵节点的单链表编码插入(L,k)和删除(L,k)函数。我的问题是: 这是正确的还是接近正确的答案 假设我所做的是正确的,我不是 查看与单个 没有哨兵节点的链表。我说的对吗 插入说明(L,k): 函数在列表中插入一个key==k的新节点(如果它还不存在的话) 删除(L,k)的说明: 函数查找key==k的节点,如果找到,则删除该节点 我们可以假设每个节点的密钥是唯一的 我对Insert的执行情况: fun Insert(pointer L,Key k) { poin
fun Insert(pointer L,Key k) {
pointer p;
pointer currNode = L; // first element
while(currNode != NULL && currNode->data != k) {
currNode = currNode->next;
}
if(currNode == NULL) { // element doesn't exist
p = newcell(Node); // allocate memory for a new node
p->data = k;
p->next = L;
L = p;
return;
}
else { // element exists
throw error;
}
}
我执行删除:
fun Delete(pointer L, Key k) {
pointer currNode = L; //first element
pointer prev = NULL; // A pointer to the previous node
if(currNode != NULL && currNode->data == k) { // first elemenent has k
L = currNode->next;
free(currNode);
}
// look for the elemenent to delete
while(currNode->next != NULL && currNode->data != k) {
prev = currNode;
currNode = currNode->next;
}
if(currNode->next == NULL) throw error; // element not found
// elemenent found
prev->next = currNode->next;
free(currNode);
}
另外,在我们的示例中,带有哨兵节点的单链接列表是这样的
您好,Stelios,我可以看到您的代码正在运行。所以,请随时提出这个问题。检查一个例子。大多数时候,这里的代码审查都是火上浇油!另外,我想回顾一下这段代码。