怎么使用java初始化链表_Java 链表(LinkNode)的简单操作:初始化,遍历,插入,删除等...
由于java中没有结构体,所以用一个类来定义链表,代码如下
主要包括一个data,还有一个指向后面一个节点的next
重写了toString函数,返回你想要的数据
定义链表的类:
package LinkNode;
public class LinkNode {
public String data;
public LinkNode next;
public String getData(){
return data;
}
public void setData(String data){
this.data=data;
}
public LinkNode getNext(){
return next;
}
public void setNext(LinkNode next){
this.next=next;
}
public LinkNode(String data,LinkNode next){
super();
this.data=data;
this.next=next;
}
public LinkNode(){
super();
}
@Override
public String toString(){
return "data:"+data+" next->"+next;
}
}
1.初始化链表:
public static void initLinkNode(LinkNode L){
L.setData("#");
L.setNext(null);
}
2.遍历链表,返回链表的长度
public static int traverse(LinkNode L){
LinkNode p = L;
int count = 1;
while(p.next!=null){
p = p.next;
count++;
}
return count;
}
3.把链表L的data转化为StringBuffer输出,输出结果为字符串
public static StringBuffer outputLinkNode(LinkNode L){
StringBuffer str = new StringBuffer("");
LinkNode p = L;
for(@SuppressWarnings("unused")
int i=0;;){
str.append(p.data);
if(p.next!=null){
p = p.next;
}
else{
break;
}
}
return str;
}
4.在链表L的尾部插入一个节点,值为data
public static void insertLinkNode(LinkNode L,String data){
LinkNode p = L;
LinkNode q = new LinkNode();
for(@SuppressWarnings("unused")
int i=0;;){
if(p.next==null){
q.setData(data);
q.setNext(null);
p.setNext(q);
System.out.println("Insert "+data+" success.");
break;
}
else{
p = p.next;
}
}
}
5.删除第n个节点(从0开始)
public static void deleteLinkNode(LinkNode L,int n){
int count = 1;
LinkNode p = L;
for(@SuppressWarnings("unused")
int i;;){
if(count == n){
p.setNext(p.next.next);
break;
}
else{
count++;
p = p.next;
}
}
}
6.从index=n开始遍历,如果后面出现str,则返回true否则返回false
public static int lastIndex(LinkNode L,String str){
LinkNode p = L;
int flag = 0;
for(int i=0;i
if(p.data==str){
//System.out.println(i);
flag = i;
}
p = p.next;
}
return flag;
}
测试程序:
package LinkNode;
public class Quarrel extends Method{
public static void main(String[] args){
LinkNode L = new LinkNode();
System.out.println("初始化:");
initLinkNode(L);
System.out.println(L.toString());
System.out.println("插入节点:");
insertLinkNode(L,"R");
insertLinkNode(L,"R");
insertLinkNode(L,"L");
insertLinkNode(L,"L");
insertLinkNode(L,"R");
insertLinkNode(L,"L");
System.out.println(L.toString());
int count = traverse(L);
System.out.println("节点个数:"+count);
StringBuffer str = outputLinkNode(L);
System.out.println(str);
//最后一个L的位置
int lastindex = lastIndex(L,"L");
System.out.println("最后一个L的位置:"+lastindex);
System.out.println("删除一个节点");
deleteLinkNode(L,2);
count = traverse(L);
System.out.println("节点个数:"+count);
str = outputLinkNode(L);
System.out.println(str);
System.out.println(L.toString());
}
}
结果如下:
怎么使用java初始化链表_Java 链表(LinkNode)的简单操作:初始化,遍历,插入,删除等...相关推荐
- java初始化一个链表_Java 链表(LinkNode)的简单操作:初始化,遍历,插入,删除等...
由于java中没有结构体,所以用一个类来定义链表,代码如下 主要包括一个data,还有一个指向后面一个节点的next 重写了toString函数,返回你想要的数据 定义链表的类: package Li ...
- java什么时候用链表_java链表的原理及使用方法
链表是一种物理存储单元上非连续.非顺序(即每个数据对象data存放的位置可以是非连续.非顺序的)的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的. 链表中每一个元素称为结点,结点可以在运 ...
- c语言数组指定位置插入和删除_玩转C语言链表,单链表/双向链表的建立/遍历/插入/删除...
最近临近期末的C语言课程设计比平时练习作业一下难了不止一个档次,第一次接触到了C语言的框架开发,了解了View(界面层).Service(业务逻辑层).Persistence(持久化层)的分离和耦合, ...
- 简单java数组程序_java(数组及常用简单算法 )
数组 数组:数组是存储同一种数据类型数据的集合容器. 数组的定义格式: 数据类型[] 变量名 = new 数据类型[长度]; 数组的好处:对分配到数组对象中每一个数据都分配一个编号(索引值.角 ...
- java listnode 合并链表_java链表ListNode删除特定值
转自:qq_17525769的博客,网址:https://blog.csdn.net/qq_17525769/article/details/53915042 package algorithm; i ...
- java如何保存初始化数据_java – 如何在JUnit测试中初始化数据
我的任务是为服务层编写压力(负载)测试.主要是CRUD操作.我们使用JUnit作为测试框架,使用JUnitPerf构建负载测试,使用 Spring注入服务bean,使用hibernate访问数据库. ...
- java switch 值_Java switch多值匹配操作详解
这篇文章主要介绍了Java switch多值匹配操作详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 我们都知道 switch 用来走流程分支,大 ...
- java 异常管理员_java web在进行管理员操作的时候,抛出了下面的异常,怎么解决啊...
我把异常贴出来:HTTP Status 500 - An exception occurred processing JSP page /Admin/adminMember.jsp at line 4 ...
- java instanceof翻译_Java 中的instanceof简单讲解
Java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法: res ...
最新文章
- (五)Docker镜像管理1之镜像操作
- SecureCRT连接linux,vim颜色显示问题
- 将程序添加到自动启动
- 给大家推荐认识一位中科院大佬!
- 面试题,反射创建类实例的三种方式是什么
- MySQL存储引擎中MyISAM和InnoDB区别
- OpenCV_轮廓例子
- 商务统计_13 使用excel拟合曲趋势线
- 软考高项笔记 | 大数据
- Rockchip平台cpu散热风扇随温度自动调速的配置方法
- 60906磁悬浮动力系统应用研究与模型搭建
- 定能解决No instances available for provider
- 磊科路由器怎么设置虚拟服务器,磊科无线路由器静态IP地址分配如何配置
- 那些在一个公司死磕了5-10年的人,最后都怎么样了?
- 使用nginx反向代理发起跨域请求
- fiddler抓取https,提示“CA 根证书不在受信任的存储区域”的解决方法
- 成功解决ImportError: cannot import name ‘GloVe‘ from ‘torchtext.legacy.vocab‘
- 语义网络 - 语义网络
- STM32F407IGT6与STM32F407ZGT6区别
- 内最有份量的破解下载网站一览