精华内容
下载资源
问答
  • 单链表节点查找

    2014-05-08 20:53:00
    单链表节点查找 查找单链表pos位置的节点,返回节点指针 pos从0开始,0返回head节点 node *search_node(node *head,int pos) { node *p=head->next; if(pos<0) { printf("incorrect position to ...
                                    单链表节点的查找
    查找单链表pos位置的节点,返回节点指针
    pos从0开始,0返回head节点
    node *search_node(node *head,int pos)
    {
    node *p=head->next;
    if(pos<0)
    {
    printf("incorrect position to search node!\n");
    return NULL;
    }
    if(pos==0)
    {
    return head;
    }
    if(p==NULL)
    {
    printf("Link is empty\n");
    return NULL;
    }
    while(--pos)
    {
    if((p=p->next)==NULL)
    {
    printf("incorrect position to search node\n");
    break;
    }
    }
    return p;
    }













    转载于:https://www.cnblogs.com/zhangaihua/p/3718074.html

    展开全文
  • 数据结构-静态单链表节点查找 时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte 总提交:142 测试通过:88 描述 在实现单链表的时候,有时可以使用一维数组来表示,静态单链表节点查找操作是...

    数据结构-静态单链表节点的查找

    时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte
    总提交:142            测试通过:88

    描述

    在实现单链表的时候,有时可以使用一维数组来表示,静态单链表节点的查找操作是静态单链表数据结构对象操作的重要内容,请您写一个程序完成在一个静态单链表查找某一个节点的操作。

    请用如下函数完成上述功能,静态单链表结构的定义如下(强烈建议使用下面的定义和函数结构)

    #define MAXSIZE 1000 //

    typedef struct{
         ElemType data;
         int            cur;
    }component,SLinkList[MAXSIZE];

    int LocateElem_SL(SLinkList S,ElemType e)

    输入

    输入包括多组测试数据,每组测试数据包括多行,第一行是静态单链表的内容,第二行是要查找的元素个数N,第三行是要查找的N个元素,用空格隔开。

    输出

    对每组测试数据,如果查找成功则输出,该元素在静态单链表中的位置,否则输出0;

    样例输入

    S1 = ( M O K O I M G K J )
    2
    G U
    S2 = ( K G H H P O A K O L K F O )
    4
    H O O S

    样例输出

    S1 = ( M O K O I M G K J )
    LocateElem_SL(S, 'G') = 7
    LocateElem_SL(S, 'U') = 0
    S2 = ( K G H H P O A K O L K F O )
    LocateElem_SL(S, 'H') = 3
    LocateElem_SL(S, 'O') = 6
    LocateElem_SL(S, 'O') = 6
    LocateElem_SL(S, 'S') = 0

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<iostream>
    using namespace std;
    typedef char Elemtype;
    char a[10000];
    char b[10000];
    char c[10000];
    typedef struct LNode
    {
        Elemtype data;
        struct LNode *next;
    } LNode,*LinkList;
    void build(LinkList &la)
    {
        if((la=new LNode)==NULL)
            exit(-1);
        la->next=NULL;
    }
    void tailbuild(LinkList &l)
    {
        LinkList q,p;
        int i;
        p=l;
        int len=strlen(a);
        int f=0;
        for(i=0; i<len; i++)
        {
            if(a[i]=='(')
                f=1;
            if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')&&(f==1))
            {
                q=new LNode;
                q->data=a[i];
                p->next=q;
                p=q;
                p->next=NULL;
            }
        }
    }
    int seinsert(LinkList l,char ch)
    {
        int i=1;
        LinkList p;
        p=l;
        p=p->next;
        while(p)
        {
            //cout<<p->data<<endl;
            if(p->data==ch)
            {
                break;
            }
            i++;
            p=p->next;
        }
        if(!p)
            return 0;
        return i;
    }
    void print(LinkList l)
    {
        LinkList q;
        q=l;
        while(q->next!=NULL)
        {
            q=q->next;
            cout<<q->data<<" ";
    
        }
    }
    int main()
    {
        LinkList la;
        int n,m,i;
        char ch;
        while(gets(a))
        {
    
            scanf("%d",&n);
            getchar();
            for(i=0; i<n; i++)
            {
                scanf("%c",&b[i]);
                    scanf("%c",&ch);
            }
            build(la);
            tailbuild(la);
            puts(a);
            for(i=0; i<n; i++)
            {
                int t=seinsert(la,b[i]);
                printf("LocateElem_SL(S, '%c') = %d\n",b[i],t);
            }
        }
        return 0;
    }
    


    展开全文
  • 数据结构-编程实现一个单链表节点查找 1:代码如下: // ConsoleApplication15.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <malloc.h> #include <iostream> using ...

    数据结构-编程实现一个单链表节点的查找

    1:代码如下:

    // ConsoleApplication15.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <malloc.h>
    #include <iostream>
    using namespace std;
    
    typedef struct node//定义链表结构体
    {
        int data;//节点内容
        node *next;//指向结构体的指针,下一个节点
    }node;
    
    node *create()//创建单链表
    {
        int i = 0;//链表中数据的个数
        node *head, *p, *q;//这些的本质是节点的地址
        int x = 0;
        head = NULL;
        q = NULL;//初始化q,q代表末节点
        p = NULL;
        while (1)
        {
            printf("please input the data:");
            scanf_s("%d", &x);
            if (x == 0)
                break;//data为0时创建结束
            p = (node *)malloc(sizeof(node));//用于每次输入链表的数据
            p->data = x;
            if (++i == 1)//链表头的指针指向下一个节点
            {
                head = p;
                q = p;
            }
            else
            {
                q->next = p;//连接到链表尾端
                q = p;
            }
            q->next = NULL;/*尾结点的后继指针为NULL(空)*/
        }
        return head;
    }
    
    int length(node *head)
    {
        int len = 0;
        node *p;
        p = head->next;
        while (p != NULL)
        {
            len++;
            p = p->next;
        }
        return len;
    }
    
    void print(node *head)
    {
        node *p;
        p = head;
        while (p)/*直到结点q为NULL结束循环*/
        {
            printf("%d ", p->data);/*输出结点中的值*/
            p = p->next;/*指向下一个结点*/
        }
    }
    
    node *search_node(node *head, int pos)//查找单链表pos位置的节点,返回节点的指针。pos从0开始,0返回head节点
    {
        node *p = head->next;
        if (pos < 0)//pos位置不正确
        {
            printf("incorrect position to search node!");//pose位置不正确
            return NULL;
        }
        if (pos == 0)
        {
            return head;
        }
        if (pos == NULL)
        {
            printf("Link is empty!");//链表为空
            return NULL;
        }
        while (--pos)
        {
            if ((p = p->next) == NULL)
            {
                printf("incorrect position to search node!");//超出链表返回
                break;
            }
        }
        return p;
    }
    
    int main()
    {
        node *head = create();//创建单链表
        printf("Length:%d\n", length(head));//测试链表的长度
        print(head);//输出链表
        node *search;
        search = search_node(head, 1);
        cout << "查找链表的第2个数为:"<<search->data << endl;//注意数是从0开始的
        return 0;
    }

    View Code

    运行结果:

    posted @ 2017-09-26 17:03 一串字符串 阅读(...) 评论(...) 编辑 收藏

    展开全文
  • 单链表节点的插入

    2014-05-08 21:02:00
    单链表节点的插入 在单链表中某位置(pos个节点)后面插入节点 1.插入到链表首部 2.插入到链表中间 3.插入到蓝标尾部 单链表某个位置插入节点,返回链头指针,pos从0开始计算,0表示插入到head节点后面 node *...
                                          单链表节点的插入
    在单链表中某位置(pos个节点)后面插入节点
    1.插入到链表首部
    2.插入到链表中间
    3.插入到蓝标尾部
    单链表某个位置插入节点,返回链头指针,pos从0开始计算,0表示插入到head节点后面
    node *insert_node(node *head,int pos,int data)
    {
    node *item=NULL;
    node *p;
    item=(node *)(sizeof(node));
    item->data=data;
    if(pos==0)//插入到链表头后面
    {
    head->next=item;
    return head;
    }
    p=search_node(head,pos);//获得pos的节点指针,查找search_node函数见我的上篇文章
    if(p!=NULL)
    {
    item->next=p->next;
    p->next=item;
    }
    return head;
    }

    转载于:https://www.cnblogs.com/zhangaihua/p/3718073.html

    展开全文
  • 一、单链表查找(带头结点)(一)按位查找GetElem(L,i):按位查找操作。获取表L中第i个位置的元素的值。//按位查找,返回第i个元素(带头结点)LNode * GetElem(LinkList L, int i){if(i<0)return NULL;LNode *p;//...
  • /*查找单链表pos位置的节点,返回节点指针*/ /*pos从0开始,0返回head节点*/ node *search_node(node *head , int pos) { node *p = head->next;/*新建节点指针并指向头节点的下个节点*/ if(pos { printf...
  • 力扣上看到的一个题,大概是写一个函数,这个函数的传参值,是一个单链表的某一个节点,需要在链表中删除这个节点。不影响其他节点。 首先按照常理,应该是找到前一个节点,并将前一个节点指向下一个指针的节点进行...
  • 定义单链表节点 ```java /** * className:LinkListNoed * * @author:ZJL * @version:0.1 * @date:2020/7/814:27 * @since:jdk1.8 */ public class LinkListNoed { /** * 定义节点 */ private Object ...
  • Java 单链表顺序查找

    2016-12-19 15:08:01
    Java 单链表顺序查找
  • 3.2.2 单链表节点类(程序3-5和程序3-6)有两个变量:一个指向下一个节点的指针和一个指向Ting对象的指针。节点类必须可以修改它指向它指向下一个节点的指针(setNext),并且取得该指针的值(getNext).此外,它...
  • 数据结构-编程实现一个单链表节点的插入 1:向链表中某个位置(第pos个节点)之后插入节点,这里分别插入到链表首部、插入到链表中间,以及链表尾端3个位置。代码如下: // ConsoleApplication15.cpp : 定义...
  • 本节讲解一下单链表节点查找、插入、删除、求单链表长度等操作。 按序号查找结点值 在单链表中从第一个结点出发,顺指针next域逐个往下搜索,直到找到第i个结点为止,否则返回最后一个结点指针域NULL。 按序号...
  • 1. 按位查找(平均时间复杂度为O(n)) GetElem(LinkList L, int i) ... //当前p指向的第几个节点 while(p!=NULL && j< i){ p = p->next; j++; } return p; } 2. 按值查找(平均
  • O(1)的方法删除单链表节点

    千次阅读 2019-04-05 16:44:56
    剑指offer上的题目,值得记录一下。 给定链表节点head和需要删除的节点dNode,要求是O(1)的时间复杂度。...1、如果节点的内容过于庞大,拷贝数据的时间比查找的时间更大。 2、如果有指向下一个节点的指针...
  • 题目: 给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点。链表节点定义如下: public class ListNode { ... 单链表中只有一个节点,删除头节点,时间复杂度为O(1)。 单链...
  • 题目:给定单项链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点。解析: 删除单向链表中的一个节点,常规做法是必须找到待删除节点的前一个节点才能实现,而这样做的时间...2. 单链表只有一个节点,即
  • 单链表中间结点查找
  • 可以先创建一个空节点,然后从第一个开始每次在单链表上拿一个节点,前插给创建的节点单链表的头结点往后移,创建的新节点往前移。当单链表为空的时候,也就逆置完了。 这里面我们需要三个指针分别是cur,用来...
  • 1.【基础题】–逆置/反转单链表+查找单链表的倒数第k个节点,要求只能遍历一次链表 2.【附加题】–实现一个Add函数,让两个数相加,但是不能使用+、-、*、/等四则运算符。ps:也不能用++、–等等**1,基础题:**/* 注...
  • 一个编程练习,删除单链表一个节点,且时间复杂度控制在O(1)内. 1.核心操作代码如下: struct ListNode { int m_data; ListNode *m_pNext; }; void DeleteNode(ListNode **pListHead, ListNode *...
  • 单链表查找

    2021-02-23 17:34:38
    查找单链表中倒数第k个节点? 思路: 首先编写一个方法,接受head节点,同时接受一个index。 index表示是倒数第index节点 先遍历链表获得长度size,得到size后。 开始遍历(size-index)个,就可以找到。 比如: ...
  • //题目1:反转一个单链表。(这是2015年广联达公司校招的第一题,15分,在华科的沁园12幢701考试的博主记忆犹新) //思路:需要3个辅助指针,一个指针指向当前要反转的节点, //一个指向该节点的前一个,一个指向该...
  • 单链表查找环的开始节点

    千次阅读 2012-07-19 10:25:51
    已知壹个链表,尾节点错误的指向了本身,形成了带一段单链表的环链表;头结点已知,链表长度未知,求节点环的开始节点 /* (Step 1) Find the meeting point. This algorithm moves two pointers at  * different ...
  • 删除单链表节点O(1)

    千次阅读 2015-07-10 16:27:39
    这个时候我们实际删除的是它的下一个结点,在删除之前,我们需要需要把给定的结点的下一个结点的数据拷贝到给定的结点中,然后删除该节点的下一个节点。此时,时间复杂度为O(1)。 上面的思路还有一个问题:如果...
  • 单链表中有效节点的个数 //获取到但链表的节点的个数(如果是带头节点的链表,需求不统计头节点) public static int getLength(HeroNode head){ if(head.next == null){//空链表 return 0; } int length =...
  • 单链表节点查找】: //查找单链表pos位置的节点,返回节点指针 //pos从0开始,0返回head节点 node *search_node(node *head, int pos) { node *p = head->next; if(pos ) //pos位置不正确 { cout << "in

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 34,879
精华内容 13,951
关键字:

单链表节点查找