当前位置: 首页 > wzjs >正文

最少的钱怎么做网站建站工具推荐

最少的钱怎么做网站,建站工具推荐,wordpress 群发插件,教育类网站开发1.链表的概念及结构 链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。 可以形象的理解,在逻辑上来看,链表就像是一节节火车车厢。 链表的分类:链表的结构有很多种,单向…

1.链表的概念及结构

链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。 可以形象的理解,在逻辑上来看,链表就像是一节节火车车厢。

链表的分类:链表的结构有很多种,单向或双向、带头或不带头、循环或不循环。这篇文章就从最简单的链表结构讲起———不带头单向非循环链表(单链表)。

2.单链表模拟实现

为了更好的学习对于单链表的操作。我们自己模拟实现一些基本的功能。

1.准备工作

接口

package List;public interface IList {//头插法void addFirst(int data);//尾插法public void addLast(int data);//任意位置插入,第一个数据节点为0号下标public void addIndex(int index,int data);//查找是否包含关键字key是否在单链表当中public boolean contains(int key);//删除第一次出现关键字为key的节点public void remove(int key);//删除所有值为key的节点public void removeAllKey(int key);//得到单链表的长度public int size();//清空public void clear() ;//打印public void display() ;
}

通过实现接口中的抽象方法实现单链表增删查改的实现。

单链表的定义

单链表(SinglyLinkedList)的定义需要定义单个节点ListNode。单个节点有data存储数据,next存储下一个节点的引用。同时单链表还需要一个成员变量head存储单链表的头位置。基于以上的需要可以把ListNode定义为单链表的内部类。

public class SinglyLinkedList {public class ListNode{public int data;public ListNode next;public ListNode(int data) {this.data = data;}}public ListNode head;
}

2.具体接口实现

添加

头插
@Overridepublic void addFirst(int data) {ListNode newnode = new ListNode(data);newnode.next = head;head = newnode;}
尾插
@Overridepublic void addLast(int data) {ListNode newnode = new ListNode(data);//链表为空if(head == null){head = newnode;return;}//链表不为空,找尾尾插ListNode cur = head;while (cur.next != null){cur = cur.next;}cur.next = newnode;}
在index位置插入
private void CheckIndex(int index){int len = this.size();if(index < 0 || index > len){throw new IllegalIndexException("index不合法");}}@Overridepublic void addIndex(int index, int data) {try {CheckIndex(index);ListNode newnode = new ListNode(data);if(index == 0){addFirst(data);}if(index == size()){addLast(data);}ListNode cur = head;while(index - 1 != 0){cur = cur.next;index--;}newnode.next = cur.next;cur.next = newnode;}catch (IllegalIndexException e){e.printStackTrace();}}

 删除

删除找到第一个key值
@Overridepublic void remove(int key) {if(head == null){return;}//解决头节点问题if(head.data == key){head = head.next;return;}ListNode cur = head;while(cur.next.data != key){cur = cur.next;}ListNode del = cur.next;cur.next = del.next;}
删除所有等于key的值
@Overridepublic void removeAllKey(int key) {if(head == null){return;}ListNode prev = head;ListNode cur = head.next;while (cur != null){if(cur.data == key){prev.next = cur.next;}else {prev = cur;}cur = cur.next;}//解决头节点data等于key的情况if(head.data == key){head = head.next;}}

查找

@Overridepublic boolean contains(int key) {ListNode cur = head;while (cur != null){if(cur.data == key){return true;}cur = cur.next;}return false;}

得到size

@Overridepublic int size() {int count = 0;ListNode cur = head;while(cur != null){count++;cur = cur.next;}return count ;}

清空

@Overridepublic void clear() {ListNode cur = head;while(cur != null){ListNode ret = cur;cur.next = null;cur = ret.next;}head = null;}

打印

@Overridepublic void display() {ListNode cur = this.head;while(cur != null){System.out.print(cur.data + " ");cur = cur.next;}System.out.println();}

2.链表oj

看这篇文章:单链表oj练习(C语言版)

虽然是C语言完成的,但是做题的思想是一样的。

3.LinkedList的模拟实现

LinkedList是java标准库提供的双向链表的实现。还是一样为了更好的理解并运用,先自己模拟实现一个。

1.准备工作

接口

接口和上面的单链表接口一样。

MyLinkedList的定义

和上面的单链表不同的是ListNode里多一个prev用于存储上一个节点的引用MyLinkedList多一个成员last存储双向链表的尾

2.具体接口实现

添加

@Overridepublic void addFirst(int data) {ListNode newnode = new ListNode(data);if(head == null){head = last = newnode;}else {newnode.next = head;head.prev = newnode;head = newnode;}}@Overridepublic void addLast(int data) {ListNode newnode = new ListNode(data);if(head == null){head = last = newnode;}else {last.next = newnode;newnode.prev = last;last = newnode;}}private void CheckIndex(int index){if(index < 0 || index > size()){throw new IllegalIndexException("index位置不合法");}}private ListNode FindIndexnode(int index){ListNode cur = head;while(index-1 > 0){cur = cur.next;index--;}return cur;}@Overridepublic void addIndex(int index, int data) {try {CheckIndex(index);if(index == 0){addFirst(data);}if(index == size()){addLast(data);}ListNode newnode = new ListNode(data);ListNode cur = FindIndexnode(index);newnode.next = cur;cur.prev.next = newnode;newnode.prev = cur.prev;newnode.next = cur;}catch(IllegalIndexException e){e.printStackTrace();}}

删除

@Overridepublic void remove(int key) {ListNode cur = head;while(cur != null){if(cur.data == key){if(cur == head){head = head.next;if(head != null){head.prev = null;}}else {cur.prev.next = cur.next;if (cur.next == null) {last = last.prev;} else {cur.next.prev = cur.prev;}}return;}cur = cur.next;}}@Overridepublic void removeAllKey(int key) {ListNode cur = head;while(cur != null){if(cur.data == key){if(cur == head){head = head.next;if(head != null){head.prev = null;}}else {cur.prev.next = cur.next;if (cur.next == null) {last = last.prev;} else {cur.next.prev = cur.prev;}}}cur = cur.next;}}

查找 打印 得到size

和单链表一样,本质都是遍历链表

清空

@Overridepublic void clear() {ListNode cur = head;while(cur != null){ListNode Curn = cur.next;cur.prev = null;cur.next = null;cur = Curn;}head = last = head;}

4.LinkedList的使用 

1.构造

public static void main(String[] args) {// 构造一个空的LinkedListList<Integer> list1 = new LinkedList<>();List<String> list2 = new java.util.ArrayList<>();list2.add("JavaSE");list2.add("JavaWeb");list2.add("JavaEE");// 使用ArrayList构造LinkedListList<String> list3 = new LinkedList<>(list2);
}

2.其他方法 

 

 


文章转载自:

http://CDie1jSm.gnpjf.cn
http://HxeA3hw8.gnpjf.cn
http://VUeNrgau.gnpjf.cn
http://A6wiTeMe.gnpjf.cn
http://YDQ2Bl6k.gnpjf.cn
http://aR2RnBn0.gnpjf.cn
http://9nUsNfNZ.gnpjf.cn
http://YClwfGNX.gnpjf.cn
http://CgfZsdP5.gnpjf.cn
http://hrt8x5h2.gnpjf.cn
http://mNgYLCf4.gnpjf.cn
http://eVe8FlLH.gnpjf.cn
http://tGymhgOf.gnpjf.cn
http://Y7TYsvGB.gnpjf.cn
http://e1Ts85y7.gnpjf.cn
http://kXXMIwJ7.gnpjf.cn
http://E0nULUod.gnpjf.cn
http://d58oVhLr.gnpjf.cn
http://eULjZkRP.gnpjf.cn
http://LmoLryGh.gnpjf.cn
http://ezPpoCi3.gnpjf.cn
http://Yh9sBpup.gnpjf.cn
http://vjSqKSgI.gnpjf.cn
http://uTbFeacz.gnpjf.cn
http://Grq4FfIG.gnpjf.cn
http://lnsoAguU.gnpjf.cn
http://0V1K8HKP.gnpjf.cn
http://w3YeXRKk.gnpjf.cn
http://zrZw3mjd.gnpjf.cn
http://vQz6Hfki.gnpjf.cn
http://www.dtcms.com/wzjs/608419.html

相关文章:

  • 怎么自己写网站企业网站开发 流程
  • 可以免费做简历的网站网站建设实训心得体会2000字
  • 建设网站免费河南小学网站建设
  • 合肥网站建设公司排名三好街做网站公司
  • 河北省城乡建设培训网官方网站php网站模板制作工具
  • 网站建设与域名备案wordpress 企业展示
  • 网站模版切换网站建设 丽水
  • 北京网站设计联系方式如何优化网站图片大小
  • 众划算网站开发通化网站建设公司
  • 网站域名验证企业宣传册文案范文
  • element ui页面模板优化落实新十条措施
  • 庆阳定制网站宣传片制作拍摄
  • 域名网站怎么打开中国建设报社门户网站
  • php完整网站开发案例东莞公司高端网站建设
  • 2018年静安区品牌网站建设如何破解网站后台
  • 深圳龙华住房和建设局网站门户网站注意事项
  • 我想建网站如何查看网站架构
  • 阿里云网站301重定向怎么做网站图标文件下载
  • 网站推广注意事项网站建设jiage
  • 网站建设300元营销型门户网站
  • 计科专业毕设做网站网站建设捌金手指花总二
  • 做好网站外链建设的最新方法苏州网上商城搭建
  • 网站换一家做还用备案么js检测网站是否能打开
  • 制作一个企业网站多少钱可以免费生成网站的软件
  • 给朋友做的相册网站没有了企业邮箱是多少怎么查
  • 网站开发原型工具wordpress 什么语言包
  • 网站qq弹窗网络品牌推广ppt
  • 网站建设空间什么意思o2o网站建设包括哪些
  • 网站部署到终端机怎么做google推广教程
  • 网站开发未来网站建设与管理专业学什么