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

songbyron 2009-10-12 09:38:44
我想请教什么是链表,我有一些编程的基础,我了解数组,但是链表这个东东我实在是搞不懂,能否请各位给举个例子,或用一些代码来实现,在下高分求教,多谢~~~

顺便问下:我今天刚刚注册,是朋友推荐的。怎么我在发帖时的“帖子问题点数”这一栏只能给“0”分呢?我明明有200可用分呀。
...全文
291 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
CATTear 2011-10-26
  • 打赏
  • 举报
回复
大家一起看
zhangzhongke007 2009-10-13
  • 打赏
  • 举报
回复
像锁链一样的表,就叫链表~
麻烦的一笔 2009-10-13
  • 打赏
  • 举报
回复
这些东西在实际的开发中用出不是很大,我这里有一本java的数据结构和算法
Lz要吗?
swandragon 2009-10-13
  • 打赏
  • 举报
回复
链表是数据结构的一种
链表的节点包括数据域和指针域
cf527085608 2009-10-13
  • 打赏
  • 举报
回复
LZ该看数据结构了~~
L502650 2009-10-13
  • 打赏
  • 举报
回复
2楼幽默.
zilong4460072 2009-10-13
  • 打赏
  • 举报
回复
JJ尚学堂?
iefus 2009-10-13
  • 打赏
  • 举报
回复
http://baike.baidu.com/view/178622.htm百度百科
lulu0126 2009-10-13
  • 打赏
  • 举报
回复
这个问题不应该给那么多高分啊!

随便Google一下!

就能得到很多详细的解释

这个问题 要学习深入,靠这里的帖子是不行的!

搜索一本经典的数据结构好好看看吧!

顺便说下,如果楼主是大学生 最好自己再买本经典的数据结果教材! 学校给买的多数不靠谱!

学校。。。 不说了!
jayqean 2009-10-13
  • 打赏
  • 举报
回复
/**
* @(#)MyLinkedList.java
*
*自定义的LinkedList
* @author
* @version 1.00 2009/10/12
*/
//节点类
class Node{
//数据区域
public Object data;
//地址区域
public Node next;

public Node(){
}

public Node(Object data){
this.data = data;
}

}

public class MyLinkedList {
//头节点
private Node header;
//尾节点
private Node tailer;

//记录当前元素个数
private int size;

public MyLinkedList(){
header = new Node();
header.next = header;
tailer = header;
size = 0;
}

public int size(){
return size;
}

// 将指定元素追加到此列表的结尾。
public void add(Object o) {
//1.出现一个新的节点
Node newNode = new Node(o);

//2.原尾节点指向新的节点
tailer.next = newNode;

//3.新节点称为新的尾节点
tailer = newNode;

size ++;
}

//返回此列表中指定位置处的元素。
public Object get(int index) {
//指定当前元素索引号
int count = 0;

//设定游标
Node currentNode = header;
Object obj = null;

for(int i = 0;i < size;i++){
//1.当前游标移动一个位置
currentNode = currentNode.next;
if(count == index){
//如果当前的索引等于指定的索引号
obj = currentNode.data;
break;
}
count++;
}

return obj;





}




}
bigbro001 2009-10-12
  • 打赏
  • 举报
回复
楼主是看了马士兵老师的视频才来的吧,呵呵,csdn的氛围是不错,希望和楼主共勉~
songbyron 2009-10-12
  • 打赏
  • 举报
回复
谢谢楼上和楼下的诸位,这里的氛围真好啊,看来我以后要常在这里混了,先去看看如何结帖……
qjcslgnhwayagain 2009-10-12
  • 打赏
  • 举报
回复
链表和数组有相同地方也有不同的地方
相同之处:都是为了存储数据 那有了数组为什么还要链表呢
因为 链表在存贮空间中不需要空间的存贮位置是连续的
那它怎么才能保证空间不连续的彼此相连呢
因为链表包含两个区域 一个是数据区,一个是指针区,指针区就是来保证链表中个每个单位彼此之间的
联系的
loveofmylife 2009-10-12
  • 打赏
  • 举报
回复
这是基础,链表就是一种数据结构,这种基本的东西建议看书,数据结构的书
如果LZ是学生的话,明天就去图书馆借一本数据结构,最好找一本java描述的
dajiadebeibei9 2009-10-12
  • 打赏
  • 举报
回复
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);
}
}
friendly_ 2009-10-12
  • 打赏
  • 举报
回复
数组在内存中是顺序存储的,可以顺序访问。
链表在内存中不是顺序存储的,它通过指针存储着下一个元素的地址,从而构成一个链。
cweijiaweil 2009-10-12
  • 打赏
  • 举报
回复
链接这个地址有定义,有代码,单链表删除插入,双向链表删除插入
http://xiaoerlanglaile.blog.sohu.com/120427163.html
一头头 2009-10-12
  • 打赏
  • 举报
回复
好比一群馒头 馒头LZ应该吃过哦?

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

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

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

....
....

然后就是一个大大的循环 也就是说 你找到了第一个馒头 你可以把学校里面的所有馒头都找到并且吃掉
chihonglu1111 2009-10-12
  • 打赏
  • 举报
回复
链表就是在所分的存储区域中把他分成两块,一个事数据域,一个是指针域,指针域就是用来指向下一个存储块的,就好像两个物体之间的一条线把他们连接起来,而数组时一块连续的区域不用指针连接

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧