美文网首页
链表复习(一)

链表复习(一)

作者: qratosone | 来源:发表于2016-03-01 00:02 被阅读0次

链表性质——此处略

简单的链表基本结构(cpp):

#include<iostream>
using namespace std;
class Node {
public:
    int data;
    Node* next;
    Node(int _data) {
        data = _data;
        next = NULL;
    }
};
class LinkList {
private:
    Node* head;
public:
    LinkList() {
        head = NULL;
    }

};
int main() {
    LinkList linklist;
    return 0;
}

实现链表插入函数——参数为Node*和int,分别表示要插入的节点和插入节点的Index,即插入节点后的节点为第Index个节点

void insert(Node* node,int index){
        if(head==NULL){//第一种情况——原链表为空,直接把head设置为node
            head=node;
            return;
        }
        if(index==0){//第二种情况:index=0.也就是把node插入到链表的首位,直接把head接在node上,然后把node设置成head
            node->next=head;
            head=node;
            return;
        }
        int count=0;
        Node* current_node=head;
        while(current_node->next!=NULL&&count<index-1){
            current_node=current_node->next; //遍历链表寻找index的前一位
            count++;
        }    
        if(count==index-1){
            node->next=current_node->next;//先把node的下一位设置成current的下一位,然后再把current的下一位设置成node,注意顺序不能变
            current_node->next=node;
        }

}

总结整个插入操作流程:

1、首先检查链表是否为空,如果为空则直接把node设置为head

2、检查index是否为0,若为0则表示将node插入到链表的首位——直接把node设置成head前一位,然后更新head为node即可

3、建立一个指针指向当前节点,同时附带一个计数器,依次遍历链表寻找index的前一位(即index-1)

4、检查count==index-1以确保index的值合法,然后执行插入操作:把node的下一位设置成current的下一位,然后更新current的下一位为node,注意顺序不能乱

遍历输出函数(解说略)

void output(){
        Node* current_node;
        if(head!=NULL){
            current_node=head;
        }
        else{
            return;
        }
        while(current_node!=NULL){
            cout<<current_node->data<<endl;
            current_node=current_node->next;
        }
        cout<<endl;
    }

相关文章

  • 链表复习(一)

    链表性质——此处略 简单的链表基本结构(cpp): 实现链表插入函数——参数为Node*和int,分别表示要插入的...

  • Java实现静态链表

    今天复习到静态链表。自己简单实现了静态链表的基本操作,记录一下

  • 单链表复习

    最近闲来无事,将之前用c语言实现的链表改用Java实现了一下,一直没时间整理,今天整理一下发出来,大家共同学习。 ...

  • 链表复习(二)

    删除链表函数: 反转链表函数: 循环链表: 注意head代表头结点,也代表尾节点

  • 算法小专栏:选择排序

    本篇将重点介绍选择排序,在讲解选择排序之前,我们先复习一下数组和链表等知识。 一、数组 or 链表? 数组和链表作...

  • 单链表相关学习笔记(C语言)

    以此文记录学习单链表的相关知识,以备后续回顾复习。完整代码:链表学习相关的笔记和代码(C 语言) 一、单链表相关说...

  • 一些链表的经典题型

    很久没有接触到链表,最近拉出来复习和总结下,并总结了一些常见的链表的题型。本文主要使用Java进行测试。 链表主要...

  • leetcode官方《初级算法》题集(三)链表、树

    以后暂时不更了,看fucking-algorithm复习算法 一、合并两个有序链表 将两个升序链表合并为一个新的 ...

  • 约瑟夫环

    复习一下关于约瑟夫环的实现原理: 如果用C来写的话,也会有许多的方法,比如1:采用链表(双向链表)2:递归3:队列...

  • 单链表(含循环单链表)——数据结构预习

    C++链表难倒了不少小萌新,今天我来写一下心得,以后忘了还能复习,先讲用malloc和free这一对cp版的单链表...

网友评论

      本文标题:链表复习(一)

      本文链接:https://www.haomeiwen.com/subject/ubigkttx.html