持续创造,加速成长!这是我参加「掘金日新方案 10 月更文挑战」的第16天,点击查看活动详情
作者简介:一位喜爱写作,计科专业的大三菜鸟
个人主页:starry陆离 的个人主页
假如文章有帮到你的话记得点赞+收藏支持一下哦
1.每日一题
描绘 请你完成一个链表。 操作:
- insert x y:将y参加链表,刺进在榜首个值为x的结点之前。若链表中不存在值为x的结点,则刺进在链表末尾。保证x,y为int型整数。
- delete x:删去链表中榜首个值为x的结点。若不存在值为x的结点,则不删去。
输入描绘: 榜首行输入一个整数n (1 < n < 104 ),表示操作次数。 接下来的n行,每行一个字符串,表示一个操作。保证操作是标题描绘中的一种。
输出描绘: 输出一行,将链表中所有结点的值按顺序输出。若链表为空,输出”NULL”(不含引号)。
2.测验事例
5
insert 0 1
insert 0 3
insert 1 2
insert 3 4
delete 4
2 1 3
3.思路剖析
这题是要我们自己完成一个链表。链表是一种物理结构上非连续、非顺序的存储结构。而链表中常用的便是增修改查。
3.1增
将y值刺进到x节点之前
- 找到节点x的前一个节点xp,
- 让节点y指向节点x,也便是
y.next=xp.next
- 最后让节点xp指向节点y,也便是
xp.next=y
3.2删
删去节点x
- 找到节点x的前一个节点xp,
- 让xp指向x的下一个节点,即
xp.next=xp.next.next
4.代码完成
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sca=new Scanner(System.in);
MyList list=new MyList();
int n=sca.nextInt();
sca.nextLine();
String[] s;
String op;
int x,y;
for(int i=0;i<n;++i){
s=sca.nextLine().split(" ");
op=s[0];
x=Integer.parseInt(s[1]);
if(op.equals("insert")){
y=Integer.parseInt(s[2]);
list.insert(x,y);
}else{
list.delete(x);
}
}
System.out.println(list);
}
}
//界说节点
class Node{
int val;//值
Node next;//指向下一个节点
public Node(int val){
this.val=val;
}
}
//自界说链表
class MyList{
Node root;//头节点
public MyList(){
root =new Node(-1);
}
//查找值为x的节点的前一个节点
public Node findPre(int x){
Node cur=root;
while(cur.next!=null&&cur.next.val!=x){
cur=cur.next;
}
return cur;
}
//将y值刺进到x节点之前
public void insert(int x,int y){
Node xPre=findPre(x);//查找值为x的节点的前一个节点
Node yNode=new Node(y);//创立y节点
yNode.next=xPre.next;//节点y的下一个节点是x节点指向的下一个节点
xPre.next=yNode;//更新x节点的下一个节点是y节点
}
//删去节点x
public void delete(int x){
Node xPre=findPre(x);//查找值为x的节点的前一个节点
if(xPre.next!=null){
xPre.next=xPre.next.next;
}
}
//输出链表中的值
public String toString(){
StringBuffer sb=new StringBuffer();
if(root.next==null){
return "NULL";
}else{
Node cur=root.next;
while(cur!=null){
sb.append(cur.val+" ");
cur=cur.next;
}
}
return sb.toString();
}
}
5.每日引荐
订阅专栏:牛客刷题集锦 – starry陆离的专栏 – 掘金 ())
每日引荐:根底算法不管在研究生面试还是求职面试都是十分重要的一环,这里引荐一款算法面试神器:牛客网-面试神器;算法题只要多刷勤刷才干坚持思路与手感,大家赶紧行动起来吧(温馨提示:常见的面试问答题库也很nice哦)
假如文章有帮到你的话记得点赞+收藏支持一下哦