package com.zi.test; public class SingleLinkList { /** * define a class Value for using object of Element * @author Administrator * */ class Value { } class Element { Object value = null; Element nextNode = null; } private Element header = null; /** * every time, add a node into front position in linklist. * header is null object, it is for mark nextNode. * insertNode is for add into linklist. * * * [header[value|nextNode]]---->[oneNode[value|nextNode]] * ^ * | * insertNode[value|nextNode] * */ public void add(Object node) { if(header == null) { header = new Element(); header.value = null; header.nextNode = null; } Element insertNode = new Element(); insertNode.value = node; insertNode.nextNode = header.nextNode; header.nextNode = insertNode; } /** * header is null, so the linklist has not mark node, that the linklist is null */ public void clear() { header = null; } /** * compare node from header node to end node. * @param node * @return */ public boolean contain(Object node) { if (header == null) return false; Element eqEl = header.nextNode; while (eqEl != null) { if (eqEl.value == node) return true; eqEl = eqEl.nextNode; } return false; } /** * scan total linklist for getting the size * @return */ public int size() { if (header == null) return 0; int i = 0; Element ele = header.nextNode; while(ele != null) { i++; ele = ele.nextNode; } return i; } /** * scan total linklist for getObject by index * @param index * @return */ public Object getObject(int index) { if (header == null) return null; int size = this.size(); if (index > size -1 || index < 0) return null; int i = 0; Element ele = header.nextNode; while (ele != null) { if (i == 0) return ele.value; i++; ele = ele.nextNode; } return null; } public boolean remove(Object node) { if (header == null) return false; Element eqPreEl = header; Element eqEl = header.nextNode; while (eqEl != null) { if (eqEl == node) { eqPreEl.nextNode = eqEl.nextNode; return true; } eqPreEl = eqEl; eqEl = eqEl.nextNode; } return false; } }
相关推荐
用两个单链表实现两个大型整数的相加。。。。不限制两个数的位数,可以大于整数在计算机的存储
“用单链表实现多项式运算”源码 作为“单链表学习笔记”的附件
单链表实现用户登录管理
用单链表实现数据的插入、查找、删除、修改
这是个用单链表实现一元多项式乘法的程序,是用c++语言实现的,有兴趣的可以来下。
单链表解决约瑟夫环问题
单链表实现双向循环链表单向链表存在一个弊端就是,当需要获取某个结点p的前驱时,需要从头指针开始遍历链表,获得“前驱”的执行时间为O(n),为了克服单向链表的这种缺点,可以利用双向链表。在双向链表中有两个...
利用带头结点的单链表实现两个集合的并、交、差运算 1.题目重述 2.题目功能描述 3. 概要设计图 4. 程序源代码及注释 5. 流程图 6. 截图与数据分析 7.所采用的存储结构的优缺点及采用理由 8.实验心得体会
c语言数据结构利用单链表实现集合间的运算
链表实现线性表的基本功能,继而更进一步地去活学活用的用好这个基本数据结构,最后更好的编程续写出更完美的程序片段
c语言单链表实现通讯录,支持添加数据、删除数据、查找数据、修改数据、排序、清空、支持保存数据到文件加载文件内数据。
数据结构,用单链表实现一元多项式的加减运算,同学们可以参考……
利用单链表的数据结构,在读取数据时就按指数次方排序好,再加法的运算中可以直接按指数的大小进行运算,相比随机的读入数据,这个方法优化了程序。乘法则是在加法的基础上把每一项的系数进行相乘并最后求和。注意...
用单链表实现多项式并求多项式导数然后输出
用单链表实现通讯录管理系统,数据结构充分应用其中
// 以下是自己写的基于C++的双向循环链表的创建及其一些操作与实现(于VC下通过),没用模板, // 也没用类,所以比较适合有一点C++语言基础入门者,但可移植不够.有什么bug的话,欢迎指出。 // 或有什么问题也可以联系...
单链表结构实现的大数阶乘,VC简单程序复制进去便可实现。采用递归调用的方法。
简易单链表增删改查功能实现。新增内容:新增单链表LruCache算法增删改查,对学习LruCache 算法有一定帮助。
单链表实现十进制大整数运算,VC++实现