03算法与数据结构-创新互联
单向链表的反转
创新互联从2013年创立,是专业互联网技术服务公司,拥有项目成都做网站、成都网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元宜良做网站,已为上家服务,为宜良各地企业和个人服务,联系电话:028-86922220// 1 ->2 ->3 ->null
// 3 ->2 ->1 ->null
public static SingleNode reverse(SingleNode head) {
SingleNode next = null;
SingleNode pre = null;
while (head != null) {
// 使用next变量 将下一个节点保存下来
next = head.getNext();
// 然后将 head的指针指向 前一个,因为要做反转操作
head.setNext(pre);
// 在开始下一次循环的时候 把当前的这个节点保存下来
pre = head;
// 然后将指针 移动到下一个节点
head = next;
}
// 最后因为head已经移动到null的位置,所以要将head的前一个节点作为结果返回,然后在用变量接收这节点
return pre;
}
双向链表的反转
public static DoubleNode reverse(DoubleNode head) {
DoubleNode next = null;
DoubleNode pre = null;
while (head != null) {
// 使用变量保留下一个节点
next = head.getNext();
// 后指针指向前
head.setNext(pre);
// 前指针指向后
head.setPre(next);
// 然后把当前节点进行记录 放到前面
pre = head;
// 然后把指针向后移动
head = next;
}
return pre;
}
在单链表当中删除给定的值
public static SingleNode deleteNum(SingleNode head, String value) {
while (head != null) {
// 找第一个不符合的节点来作为头
if (!head.getValue().equals(value)) {
break;
}
head = head.getNext();
}
SingleNode pre = head;
SingleNode cur = head;
while (cur != null) {
if (cur.getValue().equals(value)) {
// 如果相同,代表这个节点需要被删除
pre.setNext(cur.getNext());
}else {
pre = cur;
}
cur = cur.getNext();
}
return head;
}
public static SingleNode generateChain() {
SingleNode node1 = new SingleNode("1");
SingleNode node2 = new SingleNode("2");
SingleNode node3 = new SingleNode("1");
SingleNode node4 = new SingleNode("3");
node1.setNext(node2);
node2.setNext(node3);
node3.setNext(node4);
node4.setNext(null);
return node1;
}
public static void main(String[] args) {
SingleNode node = deleteNum(generateChain(), "1");
while (node != null) {
System.out.print(node.getValue() + ",");
node = node.getNext();
}
}
栈和队列栈:先入后出 类似弹夹
队列:先入先出 类似排队
哈希表和有序表在java当中 Hashmap 就是哈希表,并且他的所有增删改查所有操作时间复杂度都为O1
在java当中TreeMap 就是有序表,这个有序表拥有哈希表全部的功能,并且,可以根据
key进行排序
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
文章名称:03算法与数据结构-创新互联
新闻来源:http://pwwzsj.com/article/cdcsoo.html