JavaSE SpringApplication tws mirror java开发环境变量 ASP.NET Markdown编辑器 wxRuby jquery iphone scroll interface matlab向上取整 reference bitmap Uploadify 八大员 pmp视频 jq获取第一个子元素 鼠标进入和离开事件 excel太长的文字隐藏 map删除指定元素 清空input文本框的值 plsql连接mysql bootstrap滚动条 oracle查看所有数据库 react python基本语法 java语言基础教程 java环境配置 java教材 java方法 java生成文件 java创建目录 简体中文语言包 销售单打印软件 修改tomcat端口 跳一跳脚本 max电池容量 js获取父节点 摩斯密码在线翻译
当前位置: 首页 > 学习教程  > 编程语言

记事本记录2——基本数据结构(链表)

2020/8/11 19:13:30 文章标签:

链表的定义

链表是一种将数据元素通过指针串联接起来形成的,链表具有两个域部分,即数据域和指针域,这里具有数据部分和地址信息的单元称为节点。链表开始叫做头指针,指向第一个节点。
链表的第一个节点和最后 一个节点分别称为链表的头结点和尾节点,尾节点的特点就是next指针为null.
进行链表操作的时候,需要瘦脸使用双指针和递归操作。
双指针即是有两个不同步的指针头指向一个链表,可对链表进行翻转等操作。
如下图所示:单链表图解
链表的定义中:

 * struct ListNode {
 *     int val;//表示链表节点中的数据存储模块
 *     ListNode *next;//表示链表节点中的指针
 *     ListNode(int x) : val(x), next(NULL) {}
 * };

则定义一个返回值为链表函数的时候需要使用:ListNode *functional()
定义一个链表的时候: ListNode *head1;
则head1表示其中一个链表的头指针。
链表例子:
找到两个单链表相交的起始节点。两个链表的长度不一。

/**这里是链表类的定义
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        ListNode *a = headA;
        ListNode *b = headB;//将两个链表的头指针取出
        if(headA==NULL || headB == NULL)
            return NULL;
        while(headA != headB)//当两个指针没有相交的时候,就会按照以下一直遍历下去。
        {
            if(headA) headA = headA->next;//表示当头指针不为空指针的时候,指针指向下一个。
            else headA = b;//当指针指向空指针时,会令此时的指针指向b也就是初始位置。
            if(headB) headB = headB->next;
            else headB = a;   
        }
        return headA;
        
    }
};

链表中节点的赋值和指向赋值说明
假设链表定义为:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */

ListNode* pt = pre->next表示新建一个节点存储当前pre节点的指针。
pre->next = cur;//使原来的链表头指向Null表示pre将指向cur节点。
cur = pre;//将当前的值和地址赋值给cur,使得cur进一步成为指向null以及具有pre值的一个节点表示pre将现在的指向和数值都赋值给cur,所以现在cur就具有了指向自己的指针和pre的数值。
pre = pt;表示将pre原来的指向赋值给pre。


本文链接: http://www.dtmao.cc/news_show_100083.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?