算法--链表

首先链表分三种:

单链表,双链表,循环单链表

写个例子说明列表的创建和遍历:

  1. publicclassLinkList{
    privateNode head;
    
    privateNode current;
    
    privatevoid add(int data){
    if(head ==null){
     head =newNode(data,null);
     current = head;
    }else{
    //创建新的结点
    Node node =newNode(data,null);
    //新创建的节点和列表进行关联
    current.next = node;
    //移动当前链表的索引位置
    current = node;
    }
    }
    
    privatevoid print(Node node){
    if(node ==null){
    return;
    }
    Node current = node;
    while(current !=null){
    System.out.println(current.data);
     current = current.next;
    }
    }
    
    /**
     * @ClassName: Node
     * @Description: TODO(定义Node数据类型)
     */
    classNode{
    int data;
    
    Node next;
    
    publicNode(){
    }
    
    publicNode(int data,Node next){
    super();
    this.data = data;
    this.next = next;
    }
    
    }
    
    publicstaticvoid main(String[] args){
    LinkList list =newLinkList();
    for(int i =0; i <10; i++){
     list.add(i);
    }
     list.print(list.head);
    }
    
    }
    

      

运行结果:

0

1

2

3

4

5

6

7

8

9

时间: 2024-12-28 22:47:17

算法--链表的相关文章

链表算法-链表前面插入节点

链表算法-链表前面插入节点

数据结构与算法-链表的基本操作---ShinPans

//链表操作:建立.插入.删除.查找.倒置.删除等基本操作 #include<stdio.h> #include<stdlib.h> typedef  struct LNode {       int data;       structLNode *next; }LNode,*Llist; LNode *creat_head();//创建一个空表 void creat_list(LNode *,int);//创建一个长度为n的线性链表 void insert_list(LNode

算法--链表的K逆序问题

转载请标明出处http://www.cnblogs.com/haozhengfei/p/9e6f4dda3138cf9fab17f996ec85b624.html 链表的K逆序问题 链表的k逆序 第7节 链表的k逆序练习题 有一个单链表,请设计一个算法,使得每K个节点之间逆序,如果最后不够K个节点一组,则不调整最后几个节点.例如链表1->2->3->4->5->6->7->8->null,K=3这个例子.调整后为,3->2->1->6-&g

基本算法——链表的一些基本操作

在简单的算法中,链表是我们经常用到的,同时,链表有时候也是让我们很头痛的一种基本操作. 下面代码中,包含了链表的一些基本操作: 1.链表的建立:(1)头插法 (2)尾插法 (3)有序建立 2.链表的插入 3.链表的删除 4.链表逆置 5.在链表中查找倒数元素 6.在链表中查找中间元素 7.判断链表是否有环 8.有序合并两个链表 声明如下: 1 #ifndef _HEAD_H 2 #define _HEAD_H 3 #include <stdio.h> 4 #include <stdlib

编程算法 - 链表逆序 代码(C)

链表逆序 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 链表逆序, 作为链表操作的基础必须要熟练手写. 主要包含3个部分, 一个指针记录后面节点, 一个指针记录前面节点, 把当前节点指到前面节点, 移动到后面节点, 前后指针依次移动. 非递归链表逆序算法的核心代码只有10行. 代码: /* * main.cpp * * Created on: 2014.9.12 * Author: Spike */ /*eclipse cdt, gcc 4.8.

数据结构与算法 - 链表

链表 题型1:数组和链表的区别是什么? 数组和链表的区别主要表现在以下几个方面: 1)逻辑结构.数组必须事先定义固定的长度,不能适应数据动态地增减.当数组中插入.删除数据项时,需要移动其他数据项.而链表采用动态分配内存的形式实现,可以适应数据动态第增减的情况,需要时可以用new/malloc分配内存空间,不需要时使用delete/free将已分配的空间释放,插入和删除元素不需要移动数据项. 2)内存结构.数组从栈中分配空间,链表从堆中分配空间. 3)数组中的数据在内存中是顺序存储的,而链表是随机

数据结构和算法-链表

链表分类 单向链表 双向链表 优势: 删除某个节点更加高效, 可以快速找到前驱节点 可以方便的在某个节点前插入元素 循环链表 当要处理的数据具有环形结构的时候, 适合循环链表. 如约瑟夫环问题 双向循环链表 数组的缺点是大小固定, 一旦声明长度就要占用连续的内存空间, 当空间不够用时更换更大的空间, 此时就需要将原数组的所有数据迁移过去, 比较费时. 链表则可以动态扩容. 数组在查询上可以更快, 链表在插入和删除上更快, 为了结合数组和链表的优点, 有同时使用的情况, 比如一个网站的用户注册,

算法--链表指定值清除

转载请标明出处http://www.cnblogs.com/haozhengfei/p/5155a3f1ce0612e35ec202156921836f.html 链表指定值清除 第8节 链表指定值清除练习题 现在有一个单链表.链表中每个节点保存一个整数,再给定一个值val,把所有等于val的节点删掉. 给定一个单链表的头结点head,同时给定一个值val,请返回清除后的链表的头结点,保证链表中有不等于该值的其它值.请保证其他元素的相对顺序. 测试样例: {1,2,3,4,3,2,1},2 {1

算法--链表的回文结构

转载请标明出处http://www.cnblogs.com/haozhengfei/p/abb04e825ba4b847dcb704605ea1cd36.html 链表的回文结构 链表回文结构练习 第9节 链表的回文结构练习题 请编写一个函数,检查链表是否为回文. 给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文. 测试样例: {1,2,3,2,1} 返回:true {1,2,3,2,3} 返回:false Java (javac 1.7) 代码自动补全 1 i