数据结构单链表创建(头插法,尾插法)java/c/c++
2017-09-24 21:07
676 查看
单链表
在单链表中,每一个节点都有一个指针域指向后继节点,从而形成一种链接的作用。在c/c++中可以通过结构体的形式,通过指针形成链表,在java中可以通过类的形式来实现。
附上c/c++的单链表
struct Link { int data; Link *next; };
头插法
顾名思义就是从头开始插入,插入的顺序会和链表中的数据发生颠倒。//单链表头 Link* creatSingleLinkHead() //默认是插入5个数字的测试 { Link *r; Link *link=(Link*)malloc(sizeof(Link)); link->next=NULL; //将最后的尾节点置为null for(int i=0;i<5;i++) { r=(Link*)malloc(sizeof(Link)); r->data=i; r->next=link->next; //将r的尾部=link的尾部,也就是null link->next=r; //将 r插入 } return link; }
以上的代码形成了一种将头部插入的方法,通过不断向头指针的next插入结构体达到目的。
尾插法
我们比较习惯的还是,插入的顺序要和存的数据的顺序一样,可以采用尾插法的方法,通过向尾部插入的方法。刚开始学 的时候,总是想着不断给link.next赋值就能达到目的,但是这样是会让以前的数据丢失
Link* creatSingleLinkTail() { Link *link=(Link*)malloc(sizeof(Link)); //用来记录头结点 Link *s,*r; r=link; //开始时候指向头结点 for(int i=0;i<5;i++) { s=(Link*)malloc(sizeof(Link)); s->data=i; r->next=s; //将s插入 r=s; //将r指向s,从而可以继续向后面插入 } r->next=NULL; //将尾结点赋值为空 return link; }
java代码实现
public class Link{ protected Link next; //指针域 protected int data;//数据域 public Link(int data) { this. data = data; } public int display() { return data; } }
先定义一个Link的类,定义一个指向后面的指针域,
照例,我们还是插入5个数据
public class SingleNode { private Link link; public SingleNode(){ link=new Link(0); } public void addToLinkTail(){ //尾插法 Link tempLink=link; for (int i=1;i<=5;i++){ Link linkAdd=new Link(i); tempLink.next= new Link(i); tempLink=linkAdd; } tempLink.next=null; } public void addToLinkHead(){ //头插法 link.next=null; for (int i=1;i<=5;i++){ Link linkAdd=new Link(i); linkAdd.next=link.next; link.next=linkAdd; } } public Link getLink(){ return link; } }
相关文章推荐
- 数据结构单链表之创建链表(尾插法)
- 数据结构学习(二)——单链表的操作之头插法和尾插法创建链表
- 数据结构学习(二)——单链表的操作之头插法和尾插法创建链表
- 数据结构学习(二)——单链表的操作之头插法和尾插法创建链表
- java实现单链表的初始化,创建,删除,插入,查找,排序,同项删除,退出等功能
- 尾插法创建单链表
- 《Java编程思想》之对象的创建、使用、生命期(简单比较java与C++的不同之处)
- java c++数据结构面试题总结
- C++单链表的动态创建,查找,遍历,删除,插入,添加,排序
- 关于C++调用jar包,在创建虚拟机时使用JNI_CreateJavaVM调用失败返回-1的问题
- C++ 代码创建虚拟机调用java方法
- 用尾插法实现单链表整表创建
- 使用NDK创建及配置C++程序(原生纯C++项目,不包含JAVA代码)
- OOP编程比较学习__C++ & JAVA (一)定义类和创建对象
- 《Java编程思想》之对象的创建、使用、生命期(简单比较java与C++的不同之处)
- 数据结构-C++描述:动态创建和释放一个二维数组
- 一个新的对象创建机制的思考--C++下实现类似于Java的对象管理机制及反射
- 结构之美:使用尾插法创建单链表
- 数据结构 - 判断单链表是否有环(C++)
- (摘)c++数据结构---单链表的节点类和单链表的查找---(凌风)