`
543089122
  • 浏览: 153817 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

简单_单链表

 
阅读更多
package sunfa;

import java.util.Iterator;

/**
 * 单链表
 * 
 * @author Administrator
 * 
 */
public class SingleLinkedList {
	public static void main(String[] args) {
		SingleLinkedList link = new SingleLinkedList();
		for (int i = 10; i < 20; i++) {
			link.add(i);
		}
		System.out.println("list:");
		Iterator it = link.iterator();
		while (it.hasNext()) {
			System.out.println(it.next());
		}
		System.out.println("getFirst:" + link.getFirst());
		System.out.println("getLast:" + link.getLast());
		link.remove(13);
		link.remove(17);
		System.out.println("删除后");
		it = link.iterator();
		while (it.hasNext()) {
			System.out.println(it.next());
		}
	}

	private Node head = new Node(null, null);
	private Node tail = null;

	public SingleLinkedList() {
		head.next = tail;
	}

	public Object getFirst() {
		if (head.next != null)
			return head.next.element;
		return null;
	}

	public Object getLast() {
		if (tail == null) {
			return null;
		}
		return tail.getElement();
	}

	public void add(Object o) {
		Node node = new Node(o, null);
		if (tail == null)
			head.next = node;
		else
			tail.next = node;
		tail = node;
	}

	public Object remove(Object o) {
		for (Node e = head.next; e != head;) {
			Node current = e;
			e = e.next;
			if (e.element == o) {
				current.next = e.next;
				return e.element;
			}
		}
		return null;
	}

	// public Object find(int index){
	// if(tail==null){
	// return null;
	// }
	// while(index!=head.next.o){
	//
	// }
	// }

	public Iterator iterator() {
		return new Itr(head);
	}

	private static class Node {
		Object element;
		Node next;

		public Node(Object o, Node next) {
			super();
			this.element = o;
			this.next = next;
		}

		public Object getElement() {
			return element;
		}

	}

	private class Itr implements Iterator {

		private Node cur;

		public Itr(Node cur) {
			super();
			this.cur = cur;
		}

		public boolean hasNext() {
			return cur.next != null;
		}

		public Object next() {
			Object o = cur.next.element;
			cur = cur.next;
			return o;
		}

		public void remove() {
		}
	}
}

分享到:
评论

相关推荐

    C语言顺序表_单链表_双链表代码.zip

    本压缩包"**C语言顺序表_单链表_双链表代码.zip**"提供了C语言实现的三种基本数据结构——顺序表、单链表和双链表的源代码,这些代码适用于初学者学习和实践。以下将详细介绍这三种数据结构及其应用。 **1. 顺序表*...

    danlianbiao.rar_VC 链表_单链表 通讯录

    与双链表相比,单链表的插入和删除操作相对简单,但无法直接访问前一个节点。 3. **VC++**:VC++是Microsoft开发的一个集成开发环境(IDE),用于编写使用C++语言的应用程序。它包括编译器、调试器和其他工具,支持...

    03_单链表的插入、删除操作.rar_C++_weakai2

    在链表头部插入新节点非常简单,只需更新头节点即可: ```cpp void insertAtHead(int value) { Node* newNode = new Node(); newNode-&gt;data = value; newNode-&gt;next = head; // head是链表的头指针 head = new...

    【课件】2.3.1_单链表的定义.pdf

    例如,在C语言中,一个简单的单链表节点结构可以定义为: ```c typedef struct Node { int data; // 数据域 struct Node *next; // 指向下一个节点的指针 } Node; ``` ### 单链表的基本操作 单链表的基本操作...

    【课件】2.3.2_1_单链表的插入删除.pdf

    通过上述分析,我们可以看到单链表的插入和删除操作虽然简单,但在具体实现过程中需要考虑多种情况和细节。对于初学者来说,理解这些基本操作及其背后的逻辑是非常重要的,这有助于更好地掌握链表这一重要的数据结构...

    2.3.2_3_单链表的建立 (2)1

    以下是一个简单的尾插法实现: ```c LinkList List_TailInsert(LinkList &L) { L = (LinkList)malloc(sizeof(LNode)); // 初始化头结点 LNode *s, *r = L; // r 为表尾指针 int x; scanf("%d", &x); // 输入...

    list-3_单链表_顺序表_数据结构_

    完成日常支出简单管理,分别利用顺序表类和单链表类进行测试。功能:输入n项支出项目,并依次输出所有支出项目。 求出这n个支出项目中的最小、最大和平均消费。 按照日期找出某一天的所有花费。 按照日期和项目找出...

    单链表的建立、插入、删除、查找.rar_单链表的建立、插入、删除、查找_插入删除

    单链表是数据结构中最基础的一种,它由一系列节点组成,每个节点包含数据元素和一个指向下一个节点的指针。本教程将详细讲解如何使用C++实现单链表的建立、插入、删除以及查找操作。 首先,我们创建单链表的基础...

    数据结构课程设计_职工信息管理系统_单链表实现程序源代码.doc

    在这个数据结构课程设计中,学生被要求开发一个职工信息管理系统,使用C语言并基于单链表数据...通过这个系统,学生可以学习到如何使用C语言来实现一个简单的信息管理系统,这在实际软件开发中是非常基础且重要的技能。

    WW1.rar_C 单链表 排序_归并排序

    以下是一个简单的归并排序实现步骤: 1. **分割**:找到链表中间节点,将其分为两半。 2. **排序**:对每个半部分递归调用归并排序。 3. **合并**:创建一个新的空链表,遍历两个已排序的子链表,每次选择较小的元素...

    lianbiao.zip_C 单链表 排序_递增式算法

    判断算法1和算法5生成单链表所表示的集合是否相等。 (10).在主函数中设计一个简单的菜单,分别调试上述算法。 【选作内容】 (11).利用算法5建立两个非递减有序单向链表,然后合并成一个非递增链表。 (12).采用...

    LinkList单文件_一个简单单链表_

    本文将深入探讨单链表的概念、特点、基本操作以及如何在实际编程中实现一个简单的单链表。 单链表由一系列节点组成,每个节点包含两部分:数据域(用于存储数据)和指针域(用于存储下一个节点的地址)。在单链表中...

    数据结构线性表简单程序 单链表

    线性表是数据结构的一种基本形式,而单链表是线性表的一种具体实现方式,尤其适合初学者入门学习。本文将深入探讨单链表的概念、特性、操作以及通过指针实现的细节。 单链表是一种动态数据结构,它由一系列节点组成...

    简单的单链表逆序 非递归

    单链表是非循环且只有一个指向下一节点的链接的数据结构。本次讨论的核心在于如何实现单链表的逆序,特别是采用非递归方法完成这一操作。 ### 单链表逆序的重要性 单链表逆序在实际应用中具有广泛的意义。例如,在...

    单链表上的简单选择排序算法

    当我们需要在单链表这种非数组结构上进行排序时,需要对基本的简单选择排序算法进行一些调整。接下来,我们将详细探讨如何在单链表上实现简单选择排序。 **一、单链表基础知识** 单链表是一种线性数据结构,由一...

    精选_毕业设计_基于C语言的单链表客房管理系统_完整源码

    用户交互界面可以使用简单的命令行输入输出实现,而数据库连接则可以借助SQL库(如SQLite)存储和检索房间信息。错误处理则需要对可能出现的异常情况进行捕获,确保程序的健壮性。 这个毕业设计项目不仅涵盖了C语言...

    Java语言-数据结构与算法视频教程 (第一部分)

    |____15.JavaDS_单链表.mp4 |____14.JavaDS_解析算术表达式.mp4 |____13.JavaDS_优先级队列.mp4 |____12.JavaDS_队列.mp4 |____11.JavaDS_栈应用实例.mp4 |____10.JavaDS_栈.mp4 |____09.JavaDS_对象的插入排序.mp4 ...

    一个简单的单链表作业

    单链表是一种基础的数据结构,它在计算机科学中扮演着重要的角色,特别是在数据存储和算法实现方面。在本作业中,我们将重点讨论单链表的基本概念、操作以及如何通过编程实现这些操作。 单链表是一种线性数据结构,...

    手写简单单链表实现功能

    手动实现简单单链表实现,有助于学习数据结构之单链表。其中实现的功能有增删改查功能。单链表的优点是插入删除效率高。但不支持随机查找,查找效率低。

    单链表的简单实现

    单链表的简单实现代码

Global site tag (gtag.js) - Google Analytics