搜索项目链表C(队列)

时间:2013-02-27 22:30:10

标签: c linked-list queue traversal

我有两个结构名称* head和* tail。

我使用head作为链接列表的开头,并使用tail作为结尾。

假设我有一个包含任意数量元素的链表

typedef struct queue
{
    int stuff;
    struct queue *nextNode;
}q;

在我的一个节点中,stuff = 164(这是假设的)

如何搜索我的链表以查找164?

谢谢!

4 个答案:

答案 0 :(得分:5)

抓住指向链表头部的指针。假设列表中的最后一项标记为nextNode指针为NULL,您可以逐个遍历列表:

struct queue *tmp = head;
while (tmp != NULL) {
    if (tmp->stuff == 164) {
        // found it!
        break;
    }
    tmp = tmp->nextNode;
}

答案 1 :(得分:0)

只需遍历队列

struct queue *current = head;

while(current != NULL)
{
    if(current->stuff == numToSearch)
        // found it
    current = current->nextNode;

}

注意:请原谅任何轻微的语法错误,自从我触及c

以来已经有一段时间了

答案 2 :(得分:0)

struct queue *find(struct queue *ptr, int val) {
 for ( ; ptr; ptr = ptr->nextNode) {
     if (ptr->stuff == val) break;
     }
 return ptr;
}

答案 3 :(得分:0)

从头开始。虽然未达到尾部,但当前项目值不是我们要寻找的那个去下一个节点。如果项目完成循环不是我们正在寻找的那个 - >列表中不存在这样的项目。代码的编写假设尾指针不是NULL。

struct queue* item = head;
while (item != tail && item->stuff != 164) {
    item = item->nextNode;
}
if (164 == item->stuff) {
// do the found thing
} else {
// do the not found thing
}