单链表:
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以节点来表示的,每个节点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个节点的地址数据。
package com.dataStructure.linearTable.singleLinearTable; public class Star { private int no; private String name; private String nickName; private Star next = null;//指向堆中下一个Star实例 public Star() { super(); } public Star(int no, String name, String nickName) { this.no = no; this.name = name; this.nickName = nickName; } public int getNo() { return no; } public void setNo(int no) { this.no = no; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getNickName() { return nickName; } public void setNickName(String nickName) { this.nickName = nickName; } public Star getNext() { return next; } public void setNext(Star next) { this.next = next; } }
package com.dataStructure.linearTable.singleLinearTable; public class Test { public static void main(String[] args) { //创建一个空的Star作为链表的头 Star head = new Star(); Star star1 = new Star(1,"Avril Lavigne","Rock Beauty Girl"); Star star2 = new Star(10,"Madonna Ciccone","Ray of Light"); Star star3 = new Star(3,"Beyonce Giselle","Black Dimond"); Star star4 = new Star(4,"Britney Spears","Sweaty"); Star star5 = new Star(7,"Whitney Houston","When You Believe"); addStarBySequence(head, star1); addStarBySequence(head, star2); addStarBySequence(head, star3); addStarBySequence(head, star4); addStarBySequence(head, star5); showStar(head); System.out.println("========================================"); removeStar(head, star5); showStar(head); } private static void showStar(Star head){ Star current = head; while(current.getNext() != null){ System.out.println("ID :"+current.getNext().getNo()+"Name :"+current.getNext().getName()); current = current.getNext(); } } //单链表的添加操作 private static void addStar(Star head, Star star){ //1)直接在尾部加(找到链表尾部,不能动头节点) Star current = head; while(null != current.getNext()){//如果当前节点的next不为空 current = current.getNext(); } //如果为空表示你退出循环,即表示队尾 current.setNext(star); //按照顺序加(确保添加有序) } private static void addStarBySequence(Star head, Star star){ if(head == null){ return; } Star current = head; while(null != current.getNext()){ if(current.getNext().getNo() >= star.getNo()){ break; } current = current.getNext(); } if(current.getNext() != null && current.getNext().getNo() >= star.getNo()){ star.setNext(current.getNext()); } current.setNext(star); } /** * 从链表中删除某个元素 * @param head * @param star */ private static void removeStar(Star head, Star star){ if(head == null || star == null){ return; } Star current = head; boolean flag = false; while(current.getNext()!= null){ if(current.getNext().getNo() == star.getNo()){ flag = true; break; } current = current.getNext(); } if(!flag){ return; } //让当前元素直接指向当前元素的下一个元素的下一个元素,中间这个没有引用指向他,被视为垃圾 current.setNext(current.getNext().getNext()); } }
相关推荐
C#单向链表C#单向链表C#单向链表C#单向链表C#单向链表C#单向链表C#单向链表C#单向链表C#单向链表C#单向链表
1.随机产生或键盘输入一组元素,建立一个带头结点的单向链表(无序)。 2.遍历单向链表。 3.把单向链表中元素逆置(不允许申请新的结点空间)。 4.在单向链表中删除所有的偶数元素结点。 5.编写在非递减...
C#单向链表的实现的源码
单向链表架构代码,适合学习链表的学生学习!内附排序函数,打印函数,链表尾添项函数,删除函数。
04.单向链表以及单向链表的应用.ppt
这是一个单向链表,它具有插入与删除节点的功能。Entry类实现了链表的各节点。
将一个单向链表反向连接
C 语言版 单向链表 #include #include typedef struct student { int num; struct student *next; }st; st *creat() //创建链表 { st *head , *tail , *p; int num = 0; head = tail = p = NULL; printf...
本文件描述单向链表类模板。移植时,仅需要本文件
数据结构,c语言实现的单向链表。代码分享 struct LinkNode { int data; struct LinkNode *next; }; typedef struct LinkNode *Lnode;
C++进阶学习——单向链表的实现,相关教程链接如下: http://blog.csdn.net/tennysonsky/article/details/49685199
培训班老师自己写的单向链表,代码非常全,也很好理解,可执行。
单向链表类定义及测试文件 对应于数据机构与算法分析(c++版)第三版或第二版 作者Clifford A.Shaffer 重庆大学使用教材
这是在面试中很常见的一个例子,实现单向链表的逆转,这个例子是用递归法实现的,一个简单的单向链表的例子
c++实现单向链表逆转,c++实现单向链表逆转,c++实现单向链表逆转,c++实现单向链表逆转,c++实现单向链表逆转,
Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现...
使用单向链表对字符串进行排序,并以从小到大的顺序显示出来。
java语言模拟单向链表,JAVA数据结构
这是近期自己参考书上和网上资源使用C++编的单向链表,主要包含了链表的增删改查功能,除此之外还有简单的排序功能,代码实现的效果图已经在项目文件夹中了,可以按照效果图进行数据的增删改查等操作,最后也希望对...
每敲一次代码都会有新的收获,基本功不扎实啥也干不了。单向链表的插入,删除,创建,遍历是数据结构的基本操作。里边的算法值得学习。下面我们就来学习一下单向链表结点的逐个删除的方法。