package ldm;
import java.util.*;
class Node<T> {
T data;
Node<T> next;
public Node(Node<T> n){
next=n;
}
public Node(T obj,Node<T> n){
data=obj;
next=n;
}
public T getData() {
return data;
}
public Node<T> getNext(){
return next;
}
}
class linkList<T>{
private Node<T> head;
private int length;
public linkList() {
length=0;
head=new Node<T>(null);
}
public Node<T> getHead(){
return head;
}
public boolean add(T obj,int pos) {
if(pos<1||pos>length+1) {
System.out.println("pos值不合法");
return false;
}
int num=1;
Node<T>p=head,q=head.next;
while(num<pos) {
p=q;
q=q.next;
num++;
}
p.next=new Node<T>(obj,q);
length++;
return true;
}
public boolean isEmpty() {
return length==0;
}
public T remove(int pos) {
if(isEmpty()) {
System.out.println("链表为空表");
return null;
}
if(pos<1||pos>length+1) {
System.out.println("pos值不合法");
return null;
}
Node<T>p=head,q=head.next;
int num=1;
while(num<pos) {
p=q;
q=q.next;
num++;
}
p.next=q.next;
length--;
return q.data;
}
public int find(T obj) {
if(isEmpty()) {
System.out.println("链表为空表");
return -1;
}
int num=1;
Node<T>p=head.next;
while(p!=null) {
if(p.data.equals(obj)) break;
p=p.next;
num++;
}
if(p==null) return -1;
return num;
}
public T value(int pos) {
if(isEmpty()) {
System.out.println("链表为空表");
return null;
}
if(pos<1||pos>length+1) {
System.out.println("pos值不合法");
return null;
}
int num=1;
Node<T>p=head.next;
while(num<pos) {
p=p.next;
num++;
}
return p.data;
}
public boolean modify(T obj,int pos) {
if(isEmpty()) {
System.out.println("链表为空表");
return false;
}
if(pos<1||pos>length+1) {
System.out.println("pos值不合法");
return false;
}
int num=1;
Node<T>p=head.next;
while(num<pos) {
p=p.next;
num++;
}
p.data=obj;
return true;
}
public int size() {
return length;
}
public void nextOrder() {
Node<T>p=head.next;
while(p!=null) {
System.out.println(p.data);
p=p.next;
}
}
public void clear() {
length=0;
head.next=null;
}
}
public class Main {
public static void main(String[] argc) {
linkList<Integer>L=new linkList<Integer>();
int a[]= {23,56,12,49,35};
for(int i=0;i<a.length;i++) L.add(a[i],i+1);
System.out.println("单链表中的数据元素为: ");
L.nextOrder();
L.add(30,4);
System.out.println("执行插入操作后的单链表中的数据元素为: ");
L.nextOrder();
L.remove(5);
System.out.println("执行删除操作后的单链表中的数据元素为: ");
L.nextOrder();
int i=L.find(12);
System.out.println("元素12在单链表中的位序为:"+i);
}
}
单链表的基本操作-Java实现
最新推荐文章于 2024-08-17 08:59:42 发布