《链表总结》
来源:互联网 发布:个人简介网站html源码 编辑:程序博客网 时间:2024/05/21 14:45
前一阶段我们学习了链表,感觉和C语言一样;
一、链表:链表有头指针head。每一个指针有两个区域,一个是数据域data,另一个是指针域next 。
二、然后就是写一个链表接口。里面有一些方法,1、得到链表长度size() 2、向链表结尾处增加指针结点add(Object value) 3、在指定位置(Index)添加指针结点add(Object value,int Index) 4、得到指定位置(Index)的节点get(int Index) 5、删除指定位置的结点remove(int Index)。
三、然后再写一个类实现接口。
四、最后再写一个类,用于运行链表方法
/**
* 先创建一个指针类
*/
public class NodeDemo {
//先定义指针的数据域
private Object value;
//定义指针的引用域
private NodeDemo next;
/**
*创建构造方法
*value--是指针的数据
*next--是指针的结点
*/
public NodeDemo(Object value, NodeDemo next) {
super();
this.value = value;
this.next = next;
}
//-------下面是value和next 的get 和set 的方法---------
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
public NodeDemo getNext() {
return next;
}
public void setNext(NodeDemo next) {
this.next = next;
}
}
/**
*写一个链表接口,包含一些链表方法
*/
public interface LinkListInterface {
/**
* 实现返回链表的长度
* @return
*/
public int size();
/**
* 实现指针的增
* @param value 增加的内容
*/
public void add(Object value);
/**
* 实现指针在固定位置的增
* @param value 增加的内容
* @param Index 增加内容所在位置
*/
public void add(Object value,int Index);
/**
* 实现指针的查
* @param Index 所得到结点的位置
* @return
*/
public Object get(int Index);
/**
* 实现删除指定位置的结点
* @param Index 被删除结点所在位置
*/
public void remove(int Index);
}
/**
*写一个链表类,实现链表接口
*/
public class MyLinkList implements LinkListInterface{
//定义头指针
public NodeDemo head;
@Override
public int size() {
int count = 0;
if(head == null){
return count;
}else{
//有头结点,count+1
count++;
NodeDemo node = head.getNext();
while(node != null){
count++;
node = node.getNext();
}
}
return count;
}
@Override
public void add(Object value) {
//创建新节点
NodeDemo node = new NodeDemo(value,null);
if(size() == 0){
head = node;
}else{
NodeDemo nodeParent = get(size()-1);
nodeParent.setNext(node);
}
}
@Override
public void add(Object value, int Index) {
NodeDemo node = new NodeDemo(value,null);
if(Index < 0){
System.out.println("位置不能为负!");
}
if(head == null){
head = node;
return ;
}
if(Index == 0){
node.setNext(head);
head = node;
return ;
}
NodeDemo node_current = get(Index);
NodeDemo node_parent = get(Index-1);
node_parent.setNext(node);
node.setNext(node_current);
}
@Override
public NodeDemo get(int Index) {
if(Index<0){
System.out.println("角标不能为负!");
}
int count = 0;
if(Index == count){
return head;
}
if(Index<size()){
NodeDemo node = head.getNext();
while(node != null){
count++;
if(Index == count){
return node;
}
node = node.getNext();
}
}
return null;
}
@Override
public void remove(int Index) {
if(size()==0){
System.out.println("链表为空!");
}else if(Index == 0){
NodeDemo node = get(Index+1);
head = node;
}else if(Index < size()-1){
NodeDemo node_current = get(Index+1);
NodeDemo node_parent = get(Index-1);
node_parent.setNext(node_current);
}else if(Index == size()-1){
NodeDemo node_parent = get(Index-1);
node_parent.setNext(null);
}
}
}
/**
*写一个类,用于运行链表方法
*/
public class NodeTest {
public static void main(String[] args) {
MyLinkList list = new MyLinkList();
list.add("zhangsan");
list.add(1236);
list.add(true);
list.add("value");
System.out.println(list.size());
System.out.println(list.get(0).getValue());
System.out.println(list.get(1).getValue());
System.out.println(list.get(2).getValue());
System.out.println(list.get(3).getValue());
list.remove(0);
list.remove(1);
list.add(45789, 0);
System.out.println(list.size());
System.out.println(list.get(0).getValue());
System.out.println(list.get(1).getValue());
System.out.println(list.get(2).getValue());
// System.out.println(list.get(3).getValue());
}
- 链表总结
- 链表总结
- 链表总结
- 链表排序总结
- 链表问题总结
- 链表操作总结
- 循环链表总结
- 链表逆序总结
- 链表总结1
- 链表总结
- 链表分类总结
- 链表总结
- 链表操作总结
- 链表操作总结
- 链表算法总结
- 《链表总结》
- 链表学习总结
- 总结之链表
- 外挂技术-回城补给设计与补给条件测试
- Foxmail新建文件夹后,邮件连同文件夹都找不到了
- localtime和localtime_r
- HTTP 错误 404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求。
- 数据转换(字节数组转文件、文件转字节数组、16进制字符转字节数组、字节数组转16进制字符)
- 《链表总结》
- java创建线程
- CString string char* char 之间的字符转换(多种方法)
- 多人在线扑克游戏源码带服务端完整版
- 创建完全二叉树的经验之谈.
- FFMPEG用法整理
- SQL Server 2008 允许远程链接 解决方法
- 机房供电系统设计——机房常用供电方式
- CGAffineTransformMake(a,b,c,d,tx,ty) 矩阵运算的原理