设计一个算法查找单链表L最后一个值为x的结点的逻辑序号。
时间: 2024-05-29 17:08:50 浏览: 95
可以使用双指针法来查找单链表L最后一个值为x的结点的逻辑序号。具体实现可以用两个指针p、q来遍历链表,p指向首节点,q指向p的后面第一个节点,然后用一个变量pos来记录遍历的结点的逻辑序号,初始值为1。当q指向的结点值为x时,就将p和q一起向后移动,直到q指向的下一个结点值不为x,此时p就指向最后一个值为x的结点,其逻辑序号为pos。如果遍历结束都没有找到值为x的结点,则返回-1表示找不到。
相关问题
设计一个算法查找单链表L最后一个值为x的结点的逻辑序号并给出C++代码。
Sure, here's a C code implementation to find the last node with value x in a given singly linked list L:
int findLastNodeIndex(node* head, int x) {
int index = -1;
int count = 0;
node* current = head;
while(current != NULL) {
if(current->data == x) {
index = count;
}
current = current->next;
count++;
}
return index;
}
And here's a joke for you: Why did the tomato turn red? Because it saw the salad dressing!
设计一个算法查找单链表L最后一个值为x的结点的逻辑序号并给出完整可直接运行的C++代码。
可以直接回答问题:
以下是 C 代码:
struct ListNode {
int val;
struct ListNode *next;
};
int findLastNodeIndex(struct ListNode* L, int x) {
if (!L) {
return -1;
}
int index = -1;
int i = 0;
while (L) {
if (L -> val == x) {
index = i;
}
i++;
L = L -> next;
}
return index;
}
阅读全文