运行结果如下:
定义结点类
public class ListNode{
int data; //数据域
ListNode next; //下一结点
ListNode(int x){ //当传int参数时,当前节点为最后一个节点,则指向下一结点为空
data=x;
next=null;
}
}
创建单链表,实现删除大于min且小于max的元素
public class removeList {
public static void main(String[] args) {
ListNode head_LA=new ListNode(0);
ListNode head_LA_=head_LA; //记录头节点,用于输出删除元素前的链表
ListNode LA=head_LA;
LA.next=new ListNode(1);
LA.next.next=new ListNode(2);
LA.next.next.next=new ListNode(3);
LA.next.next.next.next=new ListNode(4);
LA.next.next.next.next.next=new ListNode(5);
int min=1;
int max=4;
System.out.print("删除元素前:");
while (head_LA_ !=null){
System.out.print(head_LA_.data+" ");
head_LA_=head_LA_.next;
}
System.out.println(" ");
ListNode head=remove(head_LA,min,max);
System.out.print("删除元素后:");
while (head !=null){
System.out.print(head.data+" ");
head=head.next;
}
}
public static ListNode remove(ListNode LA,int min,int max){
ListNode head_LB=new ListNode(0);
ListNode LB=head_LB;
ListNode p=LA;
while (p !=null ){
ListNode r=p.next;
if(p.data<=min || p.data>=max){ //不在(min,max)范围内的结点,则进入LB
LB.next=p;
p.next=null;
LB=LB.next;
}
p=r;
}
return LA;
}
}
题目集合
JAVA 有一个带头结点的单链表head,其ElemType类型为char,设计一个算法使其元素递增有序
JAVA 已知线性表的元素按递增顺序排列,并以带头结点的单链表作存储结构。试编写一个删除表中所有值大于min且小于max的元素(若表中存在这样的元素)