链表总结
概念:
1.链表是一种物理存储单元上非连续,非顺序的储存结构。它有多个结点组成,一个结点包括存储数据的数据区域和指向下一个结点的指针域。
2.链表一般会有普通链表,循环链表,双向链表的分类。
构建结点:
public class Node {
//要存储的数据
private Object data;
//节点的孩子节点
private Node child;
}
这样即构建好了一个结点,date为任意类型的数据,child即为指向下一个结点的指针,当然,数据类型也可以写多个,可以一个结点储存多个信息。
之后写入获取和设置函数,方便改变和得到结点的内容
建造链表
链表是一个灵活的容器,可以储存任意类型的数据,并且因为数据物理内储存不连续,所以对于删除和插入操作比较容易。
public class LinkTest {
private Node root=null; //根节点
private Node end=null; //尾结点
private int length=0; //长度
}
这样创造一个空链表,对于链表,应该具有基本的添加函数,删除函数,获取函数。
//添加结点
public void add(Node node) {
//如果链表为空
if(null==root){
root = node;
end = node;
}
else {//如果不为空
node.setChild(null);
end.setChild(node);
node.setParent(end);
end = node;
}
this.length++;
}
//获取结点数据
public Object getNodeData(int index){
//设计指针 并指向头结点
Node temp = new Node("指针");
temp = root;
//根据索引找到药修改的位置
for(int i=0;i<index;i++){
temp = temp.getChild();
}
return temp.getData();
}
//移除一个结点
public void remove(int index){
if(index<0||index>length){
return ;
}
Node temp = new Node("指针");
temp =root;
//利用循环找到要删除的节点索引位置
for(int i=0;i<index-1;i++){
temp = temp.getChild();
}
//删除该结点
temp.setChild(temp.getChild().getChild());
//防止尾结点被删除儿导致的 空指针
if(null!=temp.getChild())
temp.getChild().setParent(temp);
//移除后队列长度减一
this.length--;
}
其实除了这些操作外,还可以自己随意定义很多操作,所以链表是一个很灵活的容器,实现自定义队列等等操作。
值得注意的是:在对结点之间经行关系的建立时,一定不要使链表某一部分先断掉,否则那一部分将会消失。如在经行添加操作时,必须先建立“添加结点”与后一个结点的关系,在将前一个结点与“添加结点”建立关系。如果反着来,则会使后面的结点与之前的结点失去联系,从而断掉,public void add(Node node,int i){
//如果链表为空
if(null==root){
root = node;
end = node;
}
else{
//建立指针,为了不使头结点断掉,新建指针代替头结点去寻找位置
Node temp = new Node("指针");
temp = root;
//找到要出入的位置
for(int j=0;j<i;j++){
temp = temp.getChild();
}
node.setChild(temp.getChild());
temp.setChild(node);
}
}
其中node.setChild(temp.getChild());
temp.setChild(node);不能调换位置。
分享到:
相关推荐
c语言简单数据结构基础,链表应用,简单链表创建,插入,输出
简单链表操作,和大伙分享一,共同学习中,代码简单易懂
c语言简单链表
c语言简单链表操作.pdf
结构体与简单链表PPT学习教案.pptx
C简单链表及其应用PPT课件.pptx
c语言简单链表操作[文].pdf
C简单链表及其应用PPT学习教案.pptx
使用C语言实现一个简单的链表,暂时没有写注释,免资源分。
简单链表类 源代码 写着玩的,自己不大会
对简单链表的插入操作,搜索操作,删除操作
用类实现一个简单的链表。其数据类型为int型。实验上做的,没太多技术含量。
利用链表操作成员函数insertlist,deletelist.outputlist,形成以下的简单链表操作程序。
已有a、b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列
此ppt介绍了链表是如何编写的,并以几个实例启发入门级学者使用链表的灵感,值得一看
主要介绍了C#实现的简单链表类,涉及C#针对链表的定义、实现及链表节点的增加、删除与修改技巧,具有一定参考借鉴价值,需要的朋友可以参考下
链表
详细解释了链表的基本操作,附有实例代码! +《链表——>小阿豪带你写链表》!!!!进入正文 1.首先,先想好自己要创建的链表格式以及最后的的显示界面!!! 2.主函数尽量放到后面写,前面写功能函数,在调用...
对链表的简单操作 一些基本的c语言程序 word形式