package Mynode;
/**
* Created with IntelliJ IDEA.
* Description:
* User: czt20
* Date: 2025 -12-09
* Time: 8:21
*/
public class MyListnode implements IList{
static class myliistnode{
public int val;
public myliistnode next;
public myliistnode(int val) {
this.val = val;
}
}
public myliistnode head;
public void creatlist(){
myliistnode node1=new myliistnode(12);
myliistnode node2=new myliistnode(23);
myliistnode node3=new myliistnode(34);
myliistnode node4=new myliistnode(45);
myliistnode node5=new myliistnode(56);
node1.next=node2;
node2.next=node3;
node3.next =node4;
node4.next=node5;
head=node1;
}
public myliistnode middlenode(){
if (head ==null){
return null;
}
myliistnode fast=head;
myliistnode slow=head;
while(fast !=null && fast.next!=null){
fast=fast.next.next;
slow=slow.next;
}
return slow;
}
public void resverlist(){
if (head==null){
return;
}
myliistnode cur=head.next;
head.next=null;
while (cur != null){
myliistnode curN=cur.next;
cur.next=head;
head=cur;
cur=curN;
}
return;
}
@Override
public void display() {
myliistnode ct=head;
while(ct!=null){
System.out.print(ct.val+" ");
ct=ct.next;
}
}
@Override
public void addFirst(int data) {
myliistnode node=new myliistnode(data);
node.next=head;
head=node;
}
@Override
public void addLast(int data) {
if (head==null){
myliistnode node = new myliistnode(data);
head=node;
}else {
myliistnode cur = head;
while (cur.next != null) {
cur = cur.next;
}
myliistnode node = new myliistnode(data);
cur.next = node;
}
}
@Override
public void addIndex (int index, int data)throws overread {
int len=size();
try{
if (index<0||index>len){
throw new overread();
}
}catch (Exception e){
System.out.println("输入错误!!!!");
e.getMessage();
}
if (index==0){
addFirst(data);
return;
}
if (index==len){
addLast(data);
return;
}
//中间插入
myliistnode node=new myliistnode(data);
myliistnode cur =head;
while (index-1!=0){
cur=cur.next;
index--;
}
node.next=cur.next;
cur.next=node;
}
@Override
public boolean contains(int key) {
myliistnode cur =head;
while (cur!=null){
if (cur.val==key){
return true;
}
cur=cur.next;
}
return false;
}
@Override
public void remove(int key) {
if (head==null){
return;
}
if (head.val==key){
head=head.next;
return;
}
myliistnode cur=tofindremovenode(key);
if (cur==null){
System.out.println("没有找到要删除的数!!!!");
return;
}
myliistnode delt=cur.next;
cur.next=delt.next;
}
private myliistnode tofindremovenode(int key){
myliistnode cur=head;
while (cur.next!=null){
if (cur.next.val==key){
return cur;
}
cur=cur.next;
}
return null;
}
@Override
public void removeAlley(int key) {
if(head==null){
System.out.println("链表错误!!!");
return;
}
myliistnode prev=head;
myliistnode cur = prev.next;
while (cur!=null){
if (cur.val==key){
prev.next=cur.next;
cur=cur.next;
}else {
prev=cur;
cur=cur.next;
}
}
if (head.val==key){
head=head.next;
}
}
@Override
public int size() {
myliistnode cur=head;
int count=0;
while(cur!=null){
count++;
cur=cur.next;
}
return count;
}
@Override
public void clear() {
head.next=null;
head=null;
}
public static void main(String[] args) {
MyListnode a=new MyListnode();
a.addFirst(1);
a.addFirst(2);
//a.addFirst(3);
a.addFirst(4);
a.addFirst(5);
a.display();
System.out.println();
MyListnode.myliistnode b=a.middlenode();
System.out.println(b.val);
}
}
package Mynode;
/**
* Created with IntelliJ IDEA.
* Description:
* User: czt20
* Date: 2025 -12-09
* Time: 21:59
*/
public class overread extends RuntimeException{
public overread(){
super();
}
public overread(String s){
super(s);
}
}
package Mynode;
/**
* Created with IntelliJ IDEA.
* Description:
* User: czt20
* Date: 2025 -12-09
* Time: 8:21
*/
public interface IList {
public void addFirst(int data);
public void addLast(int data);
public void addIndex(int index,int data);
public boolean contains(int key);
public void remove(int key);
public void removeAlley(int key);
public int size();
public void clear();
public void display();
}