精华内容
下载资源
问答
  • 2021-03-07 21:46:06

    在Java编程中,如何搜索链表中的元素?

    以下示例演示如何使用linkedlistname.indexof(element)搜索链表中的元素获取元素的第一个位置,以及使用linkedlistname.Lastindexof(elementname)获取链表中元素的最后一个位置。

    package com.yiibai;

    import java.util.LinkedList;

    public class SearchingLinkedList {

    public static void main(String[] args) {

    LinkedList lList = new LinkedList();

    lList.add("11");

    lList.add("22");

    lList.add("33");

    lList.add("44");

    lList.add("66");

    lList.add("22");

    lList.add("12");

    System.out.println("First index of 22 is:" + lList.indexOf("22"));

    System.out.println("Last index of 22 is:" + lList.lastIndexOf("22"));

    }

    }

    上述代码示例将产生以下结果 -

    First index of 22 is:1

    Last index of 22 is:5

    示例-2

    以下是搜索链表中的元素的另一个示例。

    package com.yiibai;

    import java.util.LinkedList;

    public class SearchingLinkedList2 {

    public static void main(String args[]) {

    LinkedList linkedlist1 = new LinkedList<>();

    linkedlist1.add(001);

    linkedlist1.add(002);

    linkedlist1.add(003);

    linkedlist1.add(004);

    linkedlist1.add(005);

    linkedlist1.add(003);

    System.out.println("First index of 004 is : " + linkedlist1.indexOf(004));

    System.out.println("Last index of 004 is : " + linkedlist1.lastIndexOf(004));

    }

    }

    上述代码示例将产生以下结果 -

    First index of 004 is : 3

    Last index of 004 is : 3

    ¥ 我要打赏

    纠错/补充

    收藏

    加QQ群啦,易百教程官方技术学习群

    注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

    更多相关内容
  • 在链表中查找元素函数签名:bool search(Node *head, int x)如果在链表中查找到这个元素返回true,否则false迭代法2) 初始化一个节点指针, current = head.3) 如果current不为NULL执行以下循环a) current->...

    在链表中查找元素

    函数签名:

    bool search(Node *head, int x)

    如果在链表中查找到这个元素返回true,否则false

    迭代法

    2) 初始化一个节点指针, current = head.

    3) 如果current不为NULL执行以下循环

    a) current->key 等于当前待查找值key则返回true.

    b) current = current->next

    4) 否则返回 false

    /*Checks whether the value key is present in linked list*/

    bool search(struct Node* head, intkey)

    {

    struct Node* current = head; //Initialize current

    while(current !=NULL)

    {

    if(current->data ==key)

    return true;

    current = current->next;

    }

    return false;

    }

    java:

    //Checks whether the value key is present in linked list

    public boolean search(Node head, intkey)

    {

    Node current = head; //Initialize current

    while (current != null)

    {

    if (current.data ==key)

    return true; //data found

    current =current.next;

    }

    return false; //data not found

    }

    c#

    // Checks whether the value key is present in linked list

    public bool search(Node head, intkey)

    {

    Node current = head; // Initialize current

    while (current != null)

    {

    if (current.data ==key)

    return true; // data found

    current =current.next;

    }

    return false; // data not found

    }

    递归法:

    bool search(head, x)

    1)如果head是NULL, return false.

    2) 如果head数据域的值和待查找的一致,返回true;

    2) 否则返回 search(head->next, x)

    c语言:

    /*

    Checks whether the value key is present in linked list

    */

    bool searchRecursive(struct Node* head, intkey)

    {

    if(head ==NULL)

    {

    return false;

    }

    //If key is present in current node,

    //return true

    if(head->data ==key)

    return true;

    //recursive for remaining list

    return searchRecursive(head->next, key);

    }

    java:

    // Checks whether the value key is present

    // in linked list

    public boolean search(Node head, intkey)

    {

    // Base case

    if (head == null)

    return false;

    // If key is present in current node,

    // return true

    if (head.data ==key)

    return true;

    // Recur for remaining list

    returnsearch(head.next, key);

    }

    c#

    // Checks whether the value key is present

    // in linked list

    public bool search(Node head, intkey)

    {

    // Base case

    if (head == null)

    return false;

    // If key is present in current node,

    // return true

    if (head.data ==key)

    return true;

    // Recur for remaining list

    returnsearch(head.next, key);

    }

    展开全文
  • 单链表获取指定位置元素

    千次阅读 2019-03-09 12:45:05
    p == NULL 代表链表为空,pos == 0 时表示我们要找的是链表中第一个元素的位置,满足这两个条件时都返回头指针head。 for (int i = 0; p &amp;&amp; i &lt; pos; i++) { p = p-&gt;next; ...

     结点是从0开始计算的

    if (p == NULL || pos == 0)
    	{
    		return head;
    	}

    p == NULL 代表链表为空,pos == 0 时表示我们要找的是链表中第一个元素的位置,满足这两个条件时都返回头指针head。

    for (int i = 0; p && i < pos; i++)
    	{
    		p = p->next;
    	}
    	return p;

    跳转之后,执行循环操作,判断条件首先需要检测指针p是否为空,而条件 i<pos 则是在确保执行次数,即确定循环到指定位置。循环内部,p = p->next 的执行结果是让p指向p所指向的结点里的 next 指针所指向的位置。

    那么,之前已经判断过 p 是否为空,为何在循环条件里边还要加?

    我们可以这样解释,如果我们指定的位置超出链表的范围,此时在执行的 p 指向最后一个结点的时候,next 即 p 已经为空,所以此处加上这个条件就可以终止循环。如果不加,那么程序继续执行到循环内部 ,此时让 p 指向 next 程序就会奔溃。

    程序代码:

    #include <stdio.h>
    
    typedef int DataType;
    typedef struct Node
    {
    	DataType data;
    	struct Node *next;
    }Node;
    
    Node* getptr(Node* head, int pos)
    {
    	Node *p = head;
    	if (p == NULL || pos == 0)
    	{
    		return head;
    	}
    	for (int i = 0; p && i < pos; i++)
    	{
    		p = p->next;
    	}
    	return p;
    }
    
    int main()
    {
    	Node *head = NULL;
    	//...省略其他操作
    	Node *p = getpte(head, 3);
    	//...
    	return 0;
    }

    附图:

    展开全文
  • 单链表搜索

    2020-12-15 12:38:41
    执行搜索以便在链表中找到指定元素的位置。 搜索链表中的任何元素都需要遍历列表,并将列表的每个元素与指定的元素进行比较。 如果元素与任何链表中的元素匹配,则从函数返回元素的位置。算法第1步:设置PTR = HEAD...

    执行搜索以便在链表中找到指定元素的位置。 搜索链表中的任何元素都需要遍历列表,并将列表的每个元素与指定的元素进行比较。 如果元素与任何链表中的元素匹配,则从函数返回元素的位置。

    算法

    第1步:设置PTR = HEAD

    第2步:设置I = 0

    第3步:如果PTR = NULL

    提示“空列表,没有什么可以搜索”

    转到第8步

    结束IF条件

    第4步:重复第5步到第7步直到PTR!= NULL

    第5步:如果ptr→data = item

    写入 i + 1

    结束IF条件

    第6步:I = I + 1

    第7步:PTR = PTR→NEXT

    [循环结束]

    第8步:退出

    C语言示例代码 -

    #include

    #include

    void create(int);

    void search();

    struct node

    {

    int data;

    struct node *next;

    };

    struct node *head;

    void main()

    {

    int choice, item, loc;

    do

    {

    printf("1.Create\n");

    printf("2.Search\n");

    printf("3.Exit\n");

    printf("4.Enter your choice ? ");

    scanf("%d", &choice);

    switch (choice)

    {

    case 1:

    printf("Enter the item\n");

    scanf("%d", &item);

    create(item);

    break;

    case 2:

    search();

    case 3:

    exit(0);

    break;

    default:

    printf("Please enter valid choice\n");

    }

    } while (choice != 3);

    }

    void create(int item)

    {

    struct node *ptr = (struct node *)malloc(sizeof(struct node *));

    if (ptr == NULL)

    {

    printf("OVERFLOW\n");

    }

    else

    {

    ptr->data = item;

    ptr->next = head;

    head = ptr;

    printf("Node inserted\n");

    }

    }

    void search()

    {

    struct node *ptr;

    int item, i = 0, flag;

    ptr = head;

    if (ptr == NULL)

    {

    printf("Empty List\n");

    }

    else

    {

    printf("Enter item which you want to search?\n");

    scanf("%d", &item);

    while (ptr != NULL)

    {

    if (ptr->data == item)

    {

    printf("item found at location %d ", i + 1);

    flag = 0;

    }

    else

    {

    flag = 1;

    }

    i++;

    ptr = ptr->next;

    }

    if (flag == 1)

    {

    printf("Item not found\n");

    }

    }

    }

    执行上面示例代码,得到以下结果 -

    1.Create

    2.Search

    3.Exit

    4.Enter your choice?1

    Enter the item

    23

    Node inserted

    1.Create

    2.Search

    3.Exit

    4.Enter your choice?1

    Enter the item

    34

    Node inserted

    1.Create

    2.Search

    3.Exit

    4.Enter your choice?2

    Enter item which you want to search?

    34

    item found at location 1

    ¥ 我要打赏

    纠错/补充

    收藏

    上一篇:链表

    下一篇:双链表

    加QQ群啦,易百教程官方技术学习群

    注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

    展开全文
  • 由于链表是链式存储,所以如果我们要查找某一个结点,也需要借助头指针一个一个的遍历下去。 代码: int LinkedListFind(LinkedList L, int x) { Node* ret; int num; num = 1; L = L->next; while (L !=...
  • Java 实例 - 链表元素查找以下实例演示了使用 linkedlistname.indexof(element) 和 linkedlistname.Lastindexof(elementname) 方法在链表中获取元素第一次和最后一次出现的位置:/*author by w3cschool.ccMain.java*...
  • 注:这里仅给出带头结点的单链表相关...typedef struct node//链表节点 { ListData data; struct node *link; }ListNode; typedef ListNode* LinkList; LinkList first;//链表头指针 LinkList CreatListF()//头插
  • C语言:链表数据查找

    千次阅读 2021-03-30 20:54:40
    链表数据查找是建立完整代码上一种功能,其实就是一段子函代码。 因此以下代码是建立之前的动态链表那篇博客的代码之上。 自观: int find(pNode head,int number); //以下代码段是增加段,契合本次查找功能。 ...
  • 查找链表指定位置的节点 -- C语言

    千次阅读 2020-02-15 21:19:12
    printf("超过链表长度了!\n"); return NULL; } p = head; while(p != NULL){ if(pos-- == 0){ q = p; break; } p = p->next; } return q; } void testFindListPos(void){ st_dataNode * ...
  • /本程序包含对双向链表的::创建、初始化、插入、删除、链表长度、查找指定元素的位置以及双向链表的销毁/ #include<stdio.h> #include<stdlib.h> typedef int Elemtype; typedef struct linknode { ...
  • python查找指定元素位置

    万次阅读 2020-08-07 21:36:34
    python查找指定元素位置 python查找指定元素 三种方式对指定元素实现定位 数据准备 1. list:一维数组勉强用用,再高维就不要用啦 2. 借助numpy库 3. 借助torch库 三种方式对指定元素实现定位 ...
  • 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表的数据元素。要实现对单链表节点的插入、删除与查找的功能,就要先进行的单链表的初始化、创建和遍历,进而实现各功能,以下是对单链表节点...
  • 函数定义采用的是自己定义的链表结构体LNode,因为此处找到之后返回的是该结点的地址,所以采取指针形式。函数的参数有两个,第一个参数是完整单链表的地址,第二个是所要查找的结点位序。 2.函数的代码: ...
  • 二分法查找数字列表指定元素的实现方法 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序...
  • public interface Link { //定义行为标准 void add(Object obj);//增 boolean remove(int index);//删除指定位置数据 boolean set(int index,Object obj);//改变指定位置数据 Object get...//查找指定位置数据 int ...
  • 【数据结构算法】③、双向链表和双向循环链表的实现、双向链表的创建-遍历-插入-删除-删除指定元素-查询指定元素、双向循环链表的创建-遍历-插入删除
  • 查找元素 插入元素 删除元素 头指针和头结点 线性链表的存储结构,整个链表的存取必须从头结点开始。 头指针指向头结点,头结点的数据域不存放任何数据,也可以存储线性表长度等信息,头结点的指针域存储指向...
  • 链表结点的查找

    千次阅读 2018-11-19 19:57:14
    **目标**:一个单项链表中(所有数据不重复)中查找值为key的结点。并返回节点地址,若未找到返回NULL 方法一: 注意:本题要求返回所查找元素key的结点地址,故输出时直接输出地址即可。 遍历链表,一一比对...
  • 数据结构——单链表基本操作(初始化,销毁,统计元素个数,指定位置元素查找元素位置,求前驱后继,插入,删除,清空,遍历输出) 1.实验目的 通过该实验,深入理解链表的逻辑结构、物理结构等概念,掌握链表基本...
  • 11.按元素查找(查找指定元素是否存在);12.按位置删(删除指定位置元素);13.按元素删(删除指定元素);14.清空(清除所有元素,但链表未销毁,还可以继续进行操作);15.按位置修改(修改指定位置的元素);16....
  • java如何LinkedList查找元素

    千次阅读 2021-02-27 16:50:11
    java如何LinkedList查找元素我们可以通过一个简单的例子来为各位介绍让各位清楚的知道LinkedList查找元素的方法。LinkedList类是双向列表,列表的每个节点都包含了对前一个和后一个元素的引用.LinkedList的构造...
  • 链表长度为n,则平均时间复杂度为O(n)。从头到尾走一遍。
  • 这种方式采用冒泡排序法,链表中各个元素的位置会发生改变(还有另一种方式,移动链表的最大元素到表尾时,元素的各个位置未发生改变,详情请参考博主另一篇博客《c语言移动链表的最大元素到表尾,链表元素位置为...
  • 删除单链表指定元素

    千次阅读 2020-07-14 17:53:50
    给定单链表,删除链表中指定等于指定元素的节点。 代码: /** * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ ListNode* removeElements(ListNode* ...
  • 与大多数数据结构一样,查找元素是否存在的唯一方法是遍历整个链表。请注意,如果链接列表已排序,我们可以使用二进制搜索。但是这里我们将考虑一个未排序的链表。工作原理:用户给定需要查找的节点元素,如...
  • 链表指定位置输出

    2017-07-19 17:00:15
    当输入1时,输出链表中第一元素的数, 同理,输入3, 输出第三个元素
  • 学习双链表之前,可先复习巩固一下单链表,双链表这个删改查原理与单链表大致相同。 原文博客如下 单链表的增删改查 目录一、双链表的特点二、双链表的组成三、代码实现结构体1.头插法2.尾插法3.按序号查找4.按值...
  • 链表查找倒数第k个结点

    千次阅读 多人点赞 2018-11-05 21:27:19
    带头结点的单链表,结点结构为(data,next),不改变链表的前提下,设计一个尽可能高效的算法,查找链表中倒数第k(k为正整数)个位置上的结点。  第一种方法是先循环一遍链表确定结点个数n,则倒数第k个结点...
  • // 链表基本操作.cpp : 定义控制台应用程序的入口点。 // // 链表基本操作.cpp : 定义控制台应用程序的入口点。 // #include<stdio.h> #include<malloc.h> #include<stdlib.h> typedef ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 101,119
精华内容 40,447
关键字:

在链表中查找指定元素