java 链表实现增删改查功能
2016-11-18 12:01
405 查看
我的代码:
package y;
import java.lang.Math;
import java.util.*;
public class ypj_LNode1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
ypj_LNode1 L=new ypj_LNode1();//创建链表实例
for(int i=0;i<10;i++)
L.add();//向链表中添加元素
System.out.println("功能列表");
System.out.println("1.添加元素");
System.out.println("2.删除元素");
System.out.println("3.修改元素");
System.out.println("4.按索引查找元素");
System.out.println("5.按元素值查找元素");
System.out.println("-------请输入您要实现的功能序号-------");
int z=0;
while(z<10){
Scanner in=new Scanner(System.in);
int i=in.nextInt();
if(3<5){
switch(i){
case 1:
System.out.println("请输入插入元素的位置:");
Scanner in1=new Scanner(System.in);
int m=in1.nextInt();
System.out.println("请输入插入元素的值:");
Scanner in2=new Scanner(System.in);
int n=in2.nextInt();
L.insert(m, n);
L.print();
break;
case 2:
System.out.println("请输入删除元素的位置:");
Scanner in3=new Scanner(System.in);
int j=in3.nextInt();
L.delete(j);
L.print();
break;
case 3:
System.out.println("请输入修改元素的位置:");
Scanner in4=new Scanner(System.in);
int k=in4.nextInt();
System.out.println("请输入修改元素的值:");
Scanner in5=new Scanner(System.in);
int l=in5.nextInt();
L.modify(k,l);
L.print();
break;
case 4:
System.out.println("请输入查找元素的位置:");
Scanner in6=new Scanner(System.in);
int o=in6.nextInt();
L.ypj_search(o);
break;
case 5:
System.out.println("请输入插入元素的值:");
Scanner in7=new Scanner(System.in);
int p=in7.nextInt();
L.value_search(p);
break;
default:
System.out.println("无此功能");
}
}
}
}
public Node head=null;//头指针
public Node ypj_last=null;//尾指针
int length;
//构造函数
public ypj_LNode1(){
this.head=null;
this.ypj_last=head;
this.length=0;
}
//向链表中添加元素
public void add(){
int data=(int)(Math.random()*100);
Node n=new Node(data);
if(head==null){
head=n;
}else{
ypj_last.next=n;
}
ypj_last=n;
length++;
}
//输出元素
public void print(){
Node node=head;
while(node!=null){
System.out.println(node.value);
node=node.next;
}
//System.out.println(this.head);
}
//插入元素
public void insert(int index,int data){
if(index<0||index>length)
System.out.println("无此位置");
Node node=this.head;
//System.out.println(node);
int j=1;
while(j<index-1){
node=node.next;//使node指向第index-1个元素
j++;
}
//System.out.println(node);
Node insert=new Node(data);
insert.next=node.next;
node.next=insert;
length++;
}
//删除元素
public void delete(int index){
if(index<0||index>length)
System.out.println("无此位置");
Node node=this.head;
int j=1;
while(j<index){
node=node.next;
j++;
}
//System.out.println(node);
node.next=node.next.next;
this.length--;
}
//修改元素
public void modify(int index,int data){
if(index<0||index>length)
System.out.println("无此位置");
Node node=this.head;
int j=1;
while(j<index){
node=node.next;
j++;
}
//System.out.println(node);
node.value=data;
}
//按下标查找元素
public void ypj_search(int index){
if(index<0||index>length)
System.out.println("无此位置");
Node node=head;
int j=1;
while(j<index){
node=node.next;
j++;
}
System.out.println(node.value);
}
//按元素值查找
public void value_search(int data){
//int flag=0;
Node node=head;
while(node!=null&&node.value!=data)
node=node.next;
if(node==null)
System.out.println("不存在此元素");
else
System.out.println("存在此元素");
}
}
class Node{
int value;
Node next;
public Node(int data){
this.value=data;
this.next=null;
}
}
我的代码:
package y;
import java.lang.Math;
import java.util.*;
public class ypj_LNode1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
ypj_LNode1 L=new ypj_LNode1();//创建链表实例
for(int i=0;i<10;i++)
L.add();//向链表中添加元素
System.out.println("功能列表");
System.out.println("1.添加元素");
System.out.println("2.删除元素");
System.out.println("3.修改元素");
System.out.println("4.按索引查找元素");
System.out.println("5.按元素值查找元素");
System.out.println("-------请输入您要实现的功能序号-------");
int z=0;
while(z<10){
Scanner in=new Scanner(System.in);
int i=in.nextInt();
if(3<5){
switch(i){
case 1:
System.out.println("请输入插入元素的位置:");
Scanner in1=new Scanner(System.in);
int m=in1.nextInt();
System.out.println("请输入插入元素的值:");
Scanner in2=new Scanner(System.in);
int n=in2.nextInt();
L.insert(m, n);
L.print();
break;
case 2:
System.out.println("请输入删除元素的位置:");
Scanner in3=new Scanner(System.in);
int j=in3.nextInt();
L.delete(j);
L.print();
break;
case 3:
System.out.println("请输入修改元素的位置:");
Scanner in4=new Scanner(System.in);
int k=in4.nextInt();
System.out.println("请输入修改元素的值:");
Scanner in5=new Scanner(System.in);
int l=in5.nextInt();
L.modify(k,l);
L.print();
break;
case 4:
System.out.println("请输入查找元素的位置:");
Scanner in6=new Scanner(System.in);
int o=in6.nextInt();
L.ypj_search(o);
break;
case 5:
System.out.println("请输入插入元素的值:");
Scanner in7=new Scanner(System.in);
int p=in7.nextInt();
L.value_search(p);
break;
default:
System.out.println("无此功能");
}
}
}
}
public Node head=null;//头指针
public Node ypj_last=null;//尾指针
int length;
//构造函数
public ypj_LNode1(){
this.head=null;
this.ypj_last=head;
this.length=0;
}
//向链表中添加元素
public void add(){
int data=(int)(Math.random()*100);
Node n=new Node(data);
if(head==null){
head=n;
}else{
ypj_last.next=n;
}
ypj_last=n;
length++;
}
//输出元素
public void print(){
Node node=head;
while(node!=null){
System.out.println(node.value);
node=node.next;
}
//System.out.println(this.head);
}
//插入元素
public void insert(int index,int data){
if(index<0||index>length)
System.out.println("无此位置");
Node node=this.head;
//System.out.println(node);
int j=1;
while(j<index-1){
node=node.next;//使node指向第index-1个元素
j++;
}
//System.out.println(node);
Node insert=new Node(data);
insert.next=node.next;
node.next=insert;
length++;
}
//删除元素
public void delete(int index){
if(index<0||index>length)
System.out.println("无此位置");
Node node=this.head;
int j=1;
while(j<index){
node=node.next;
j++;
}
//System.out.println(node);
node.next=node.next.next;
this.length--;
}
//修改元素
public void modify(int index,int data){
if(index<0||index>length)
System.out.println("无此位置");
Node node=this.head;
int j=1;
while(j<index){
node=node.next;
j++;
}
//System.out.println(node);
node.value=data;
}
//按下标查找元素
public void ypj_search(int index){
if(index<0||index>length)
System.out.println("无此位置");
Node node=head;
int j=1;
while(j<index){
node=node.next;
j++;
}
System.out.println(node.value);
}
//按元素值查找
public void value_search(int data){
//int flag=0;
Node node=head;
while(node!=null&&node.value!=data)
node=node.next;
if(node==null)
System.out.println("不存在此元素");
else
System.out.println("存在此元素");
}
}
class Node{
int value;
Node next;
public Node(int data){
this.value=data;
this.next=null;
}
}
相关文章推荐
- JAVA实现双向链表的增删功能
- JAVA实现双向链表的增删功能
- java链表增删查改等功能的实现
- JAVA实现双向链表的增删功能的方法
- HashMap存取效率高原因、ArrayList和LinkedList区别、JAVA实现链表的基本功能
- java中链表功能的实现
- 数据结构实验1 链表 实现学生信息存储,功能 增删改查,实现 结构类型
- Java 链接mysql数据库实现增删该查功能
- 基于MongoDB数据库的Java程序实现增删改查功能
- 纯Java JDBC连接数据库,且用JDBC实现增删改查的功能
- 基于MongoDB数据库的Java程序实现增删改查功能
- Java学习笔记——应用矢量和迭代器来实现类似链表的功能
- JAVA_WEB项目之Lucene检索框架实现增删查改的代码优化以及分页功能实现
- 基于MongoDB数据库的Java程序实现增删改查功能
- 基于MongoDB数据库的Java程序实现增删改查功能
- 基于MongoDB数据库的Java程序实现增删改查功能
- C语言双链表,可实现增删改查功能,还可以将链表反转。
- 数据结构之链表的增删操作的Java实现
- 基于MongoDB数据库的Java程序实现增删改查功能
- java 顺序表实现增删改查,合并,排序功能