链表 :链表的创建+遍历

今天从数据结构开始看起,首先了解的是链表。我先从链表的创建开始,本人习惯使用java,开始介绍也使用java实现

  • 链表
  1. 链表的创建

    1.1连表的插:

  1. package link;
    /**
     * linkCreate是创建链表,主要有链表的创建,
     * 链表建立,链表的测试,打印链表的长度
     * @author Administrator
     * 在这里使用的是
     *
     */
    public class LinkCreate<Item> {
    	private Node first;
    	private int length;
    	public LinkCreate(){
    		first=null;
    		length=0;
    	}
    	/**
    	 * 在这里是开始创建链表,使用的是头插入的方法
    	 */
    	public void add(Item item){
    		Node oldfirst=first;
    		first=new Node();
    		first.item=item;
    		first.next=oldfirst;
    		length=length+1;
    	}
    	/**
    	 * 一个链表要判断是否是空,的长度是多少
    	 * @param node
    	 * @return
    	 */
    	public int length(Node node){
    
    		int length=0;
    		if(node==null) return length;
    		while(node!=null){
    			length++;
    			node=node.next;
    
    		}
    		return length;
    	}
    	public void print(Node node){
    		while(node!=null){
    			System.out.print(node.item);
    			node=node.next;
    			System.out.println();
    		}
    
    	}
    	public static void main(String[] args) {
    		LinkCreate<String>  lc =new LinkCreate<String>();
    		for(int i=0;i<8;i++)
    		{
    			lc.add(i+"a");
    			System.out.println(lc.length);
    		}
    		System.out.println(lc.length(lc.first));
    		lc.print(lc.first);
    	}
    
    	/**
    	 * 在这的Node表示的是链表中的节点,主要是使用的是的Item的值
    	 * 以及连接下一个的链表
    	 * @author Administrator
    	 *
    	 */
    	class Node<Item>{
    		private Item  item;
    		private Node next;
    	}
    
    }
时间: 2024-11-06 21:26:23

链表 :链表的创建+遍历的相关文章

「C语言」单链表/双向链表的建立/遍历/插入/删除

最近临近期末的C语言课程设计比平时练习作业一下难了不止一个档次,第一次接触到了C语言的框架开发,了解了View(界面层).Service(业务逻辑层).Persistence(持久化层)的分离和耦合,一种面向过程的MVC的感觉. 而这一切的基础就在于对链表的创建.删除.输出.写入文件.从文件读出...... 本篇文章在于巩固链表的基础知识(整理自<C语言程序设计教程--人民邮电出版社>第十章),只对链表的概念及增删改查作出探讨,欢迎指教. 一.链表结构和静态/动态链表 二.单链表的建立与遍历

双链表&amp;链表合并&amp;多项式相加算法

//单链表的合并 //链表合并 //两个链表必须是有序的 #define Maxsize 5 typedef  int elemtype; typedef struct linklist { elemtype data; struct linklist *next; }Linklist; //建立链表1 Linklist *CreateList1 () { int i,data ; Linklist *head, *p, *q; head=p=(Linklist  *)malloc(sizeof

相交链表--链表

题目 编写一个程序,找到两个单链表相交的起始节点. 如下面的两个链表: 在节点 c1 开始相交. 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 输出:Reference of the node with value = 8 输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0).从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B

头插法链表的基本操作:创建空链表,插入结点,遍历链表,求链表长度,查找结点,删除结点

1 #include <stdio.h> 2 #include <stdlib.h> 3 /* 4 头插法链表的基本操作:创建空链表,插入节点,遍历输出节点数据,求链表长度,查找结点,删除结点. 5 */ 6 typedef struct node 7 { 8 int data; 9 struct node * next; 10 }NODE; 11 //创建空链表 12 NODE * createList() 13 { 14 NODE * head = (NODE *)malloc

对邻接链表的深度优先(DFS)遍历

深度优先搜索算法在搜索过程中对节点进行涂色来指明节点的当前状态. 每个节点的初始颜色都是白色. 在节点被发现后变成灰色. 在其邻接链表被扫描完成之后变成黑色. 该方法可以保证每个节点只在一棵深度优先树中出现, 因此, 所有的深度优先树是不相交(disjoint)的. 除了创建深度优先搜索森林之外, 该方法还在每个节点盖上两个时间戳. 一个是被发现的时间(涂上灰色的时间), 另一个是完成对v的邻接链表扫描的时间(涂上黑色的时间). 这些时间戳提供了图的结构的重要信息. 当DFS算法返回时, 每个顶

[算法]链表的逆序遍历节点

有一个链表,知道链表头,怎么逆序打印出链表每个节点的值. 我们知道,当知道了链表头的时候,很容易顺序访问所有节点的值,但是如何逆序访问所有节点呢? 访问一棵二叉树,通常可以深度优先和广度优先访问每个节点,深度优先又分为先序,中序和后续遍历,后续遍历就是先访问树的右子树,再访问左子树,最后访问父节点,如果我们把一个链表看成是一颗单叉树,利用树的后续遍历就达到了逆序访问链表的每个节点,利用递归,实现代码如下: struct node { int val; node* next; }; void tr

链表的简单创建及使用

// // ViewController.m // Link_list_Demo // // Created by 张凯泽 on 16/5/10. // Copyright © 2016年 rytong_zkz. All rights reserved. // #import "ViewController.h" struct Link_list{ int data; struct Link_list * Pnext; }; struct Link_list * head_list;

单向链表的建立与遍历

软件152笪世海 #include "stdio.h"#include <stdlib.h>#include <time.h> enum Status{OK,ERROR};typedef int ElemType; typedef struct LNode { ElemType data;///链表结点的元素,类型为int LNode *next;//指向下一结点指针}LNode,*LinkList; Status CreatLink(LinkList &

单向链表的基本操作-创建、插入、删除

一.链表的基本概念 单链表 :  n个结点链接成一个链式线性表的结构叫做链表,当每个结点中只包含一个指针域时,叫做单链表 表头结点:链表中的第一个结点,包含指向第一个数据元素的指针以及链表自身的一些信息 如长度等 ??数据结点:链表中代表数据元素的结点,包含指向下一个数据元素的指 ??尾结点:   链表中的最后一个数据结点,其下一元素指针为空,表示无后继  二.链表的定义 由于带头的链表操作比较方便,下文介绍的所有操作都是基于都头结点的单链表, 1.链表的定义 1 /* 链表节点的定义 */ 2