编写单链表的成员方法:在带头结点的单链表中,删除指定序号的元素。
不能删除时,抛出异常:IllegalArgumentException("delete Error")
方法描述:
public void delete(int i)
输入样例1:
输入两行数据。
第一行的第1行数n,表示单链表的长度,接下来n个整数是单链表的元素。
第二行有1个整数 ,表示删除的位置编号。
5 2 8 7 4 6
2
输出样例1:
输出单链表的所有元素,两个元素用1个空格分隔,末尾没有空格。
2 8 4 6
输入样例2:
5 2 8 7 4 6
5
输出样例2:
异常输出,末尾没有空格
delete Error
裁判测试程序样例:
import java.util.Scanner;
class LinkNode {
int data;
LinkNode next;
public LinkNode() {
this.next = null;
}
public LinkNode(int e) {
this.data = e;
this.next = null;
}
}
class LinkList {
LinkNode head;
public LinkList(int d[] ) {
//用数组d的元素,采用头插法,创建带头结点的单链表
//代码省略,不需要提交
。。。。
}
}
public void display() //显示线性表的所有元素
{
//代码省略,不需要提交
。。。。
}
/*你提交的代码将嵌入这里 */
}
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int data[] = new int[n];
for(int i=0;i<n;i++) {
data[i]= sc.nextInt();
}
LinkList L = new LinkList(data );
int i = sc.nextInt();//输入位置
try{
L.delete(i);
L.display( );
}
catch(IllegalArgumentException e ) {
System.out.println(e.getMessage());
}
sc.close();
}
}
答案:
public int getSize( ) {
LinkNode p = head;
int cnt=0;
while(p.next!=null){
cnt++;
p = p.next;
}
return cnt;
}
public void delete(int i) {
if(i<0 || i>=this.getSize())
throw new IllegalArgumentException("delete Error");
LinkNode p = head;
for(int j=0;j<i;j++) {
p = p.next;
}
p.next = p.next.next;
}