MyException - 我的异常网
当前位置:我的异常网» J2SE » 什么是链表,多谢各位!(终于可以给高分了,呵呵~)

什么是链表,多谢各位!(终于可以给高分了,呵呵~)

www.MyException.Cn  网友分享于:2013-03-07  浏览:14次
高分求教什么是链表,谢谢各位!(终于可以给高分了,呵呵~~~)
我想请教什么是链表,我有一些编程的基础,我了解数组,但是链表这个东东我实在是搞不懂,能否请各位给举个例子,或用一些代码来实现,在下高分求教,多谢~~~

  顺便问下:我今天刚刚注册,是朋友推荐的。怎么我在发帖时的“帖子问题点数”这一栏只能给“0”分呢?我明明有200可用分呀。

------解决方案--------------------
链表就是在所分的存储区域中把他分成两块,一个事数据域,一个是指针域,指针域就是用来指向下一个存储块的,就好像两个物体之间的一条线把他们连接起来,而数组时一块连续的区域不用指针连接
------解决方案--------------------
好比一群馒头 馒头LZ应该吃过哦?

馒头有2个内容 一个就是外面的皮 一个就是里面的肉

链表就是一群串起来的馒头 馒头的皮 就好像是数据 而馒头的里面的肉就好比是一个线索 里面记录着可以找到下一个馒头的地址

具体来说 你在一个食堂吃馒头 皮吃完了 发现里面写着“下一个馒头在1号教学楼205”
然后你跑到 1号教学楼205 发现里面还真的有一个一模一样的馒头 然后你又吃啊 
吃完皮了 发现里面写着 “下一个馒头在2号教学楼物理实验室”

....
....

然后就是一个大大的循环 也就是说 你找到了第一个馒头 你可以把学校里面的所有馒头都找到并且吃掉
------解决方案--------------------
链接这个地址有定义,有代码,单链表删除插入,双向链表删除插入
http://xiaoerlanglaile.blog.sohu.com/120427163.html
------解决方案--------------------
数组在内存中是顺序存储的,可以顺序访问。
链表在内存中不是顺序存储的,它通过指针存储着下一个元素的地址,从而构成一个链。
------解决方案--------------------
Java code
import java.util.*;

class Node
{
 static int num = 1;
 double data;
 Node next;
 Node prep;
 Node(double ddata,Node nnext,Node pprep)
 {
  data = ddata;
  next = nnext;
  prep = pprep;
 }
 Node(double ddata,Node k,int sign) //0为前,1为后
 {
  data = ddata;
  if(sign == 0)
  {
   this.prep = k;
   k.next = this;
   this.next = null;
      k = Listoper.MoveNodeNex(k);
  }
  else
  {
   this.next = k;
   k.prep = this;
   this.next = null;
   k = Listoper.MoveNodePre(k);
  }
 }
 Node(double ddata)
 {
  data = ddata;
  next = null;
  prep = null;
 }
 Node()
 {
  data = 0;
  next = null;
  prep = null;
 }
 static boolean MakeEmpty(Node Me)
 {
  Me.data = 0;
  Me.next = null;
  Me.prep = null;
  Me = null;
  
  if(Me == null)
   return true;
  return false;
 }
 
 void display()
 {
  System.out.println("节点"+num+"的值为:"+"["+data+"]");
  num++;
 }
}
class Listoper
{
 static void InsertNode(Node ListLoc,Node WorkNode)  //将节点WorkNode 插入在节点ListLoc前面。
 {
       WorkNode = ListLoc.prep.next;
  WorkNode.prep = ListLoc.prep;
   ListLoc.prep = WorkNode;
  WorkNode.next = ListLoc;
 }
 static boolean DeleteNode(Node ListHead,int ddata) //将和ddata相同数据项的节点在链表中删除
 {
  while(ListHead.data != ddata && ListHead != null)
  {
   ListHead = ListHead.next;
  }
  if(ListHead == null)
  {
   return false;
  }
  Node p = new Node();
  p = ListHead;
  p.prep.next = p.next;
  p.next.prep = p.prep;
  
  if(Node.MakeEmpty(p) == true)
   System.gc();
  else
  {
   System.out.println("memory error!");
  }
  return true;
 }
 static void DisplayList(Node Llist)    //打印出链表中各个节点
 {
  while(Llist != null)
  {
   Llist.display();
   Llist = Llist.next;
  }
 }
 static Node MoveNodePre(Node p)         //对链表中当前节点进行前后移位的操作
 {
  return p.prep;
 }
 static Node MoveNodeNex(Node p)
 {
  return p.next;
 }
}

public class ABC
{
 public static void main(String[] args)
 {
  int i;
  Random Rdata = new Random();
  Node head = new Node(Rdata.nextDouble()*100);
  Node p = head;
  for(i = 2; i < 10; i++)
  {
   p = new Node(Rdata.nextDouble()*10000,p,0);
  }
  Listoper.DisplayList(head);
 }
}

------解决方案--------------------
链表和数组有相同地方也有不同的地方
相同之处:都是为了存储数据 那有了数组为什么还要链表呢
因为 链表在存贮空间中不需要空间的存贮位置是连续的
那它怎么才能保证空间不连续的彼此相连呢
因为链表包含两个区域 一个是数据区,一个是指针区,指针区就是来保证链表中个每个单位彼此之间的
联系的
------解决方案--------------------
链表是数据结构的一种
链表的节点包括数据域和指针域
------解决方案--------------------
/**
 * @(#)MyLinkedList.java
 *
 *自定义的LinkedList

文章评论

程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
中美印日四国程序员比较
中美印日四国程序员比较
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
Java程序员必看电影
Java程序员必看电影
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
旅行,写作,编程
旅行,写作,编程
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序员应该关注的一些事儿
程序员应该关注的一些事儿
我是如何打败拖延症的
我是如何打败拖延症的
如何成为一名黑客
如何成为一名黑客
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
为什么程序员都是夜猫子
为什么程序员都是夜猫子
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
程序员都该阅读的书
程序员都该阅读的书
10个调试和排错的小建议
10个调试和排错的小建议
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
程序员和编码员之间的区别
程序员和编码员之间的区别
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
 程序员的样子
程序员的样子
每天工作4小时的程序员
每天工作4小时的程序员
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
漫画:程序员的工作
漫画:程序员的工作
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
那些争议最大的编程观点
那些争议最大的编程观点
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
程序员必看的十大电影
程序员必看的十大电影
老程序员的下场
老程序员的下场
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
总结2014中国互联网十大段子
总结2014中国互联网十大段子
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有