java问题,链表跟顺序表到底有什么不同?顺序表我知道,但是为什么说链表读取数据时要从头开始,
java问题,链表跟顺序表到底有什么不同?顺序表我知道,但是为什么说链表读取数据时要从头开始,而顺序表可以直接读取任意位置?比如顺序表的按姓名查询学生信息:publics...
java问题,链表跟顺序表到底有什么不同?顺序表我知道,但是为什么说链表读取数据时要从头开始,而顺序表可以直接读取任意位置?比如顺序表的按姓名查询学生信息:
public static void search(String a,students b[]){
int i;
int j=0;
for(i=0;i<b.length;i++)
if(b[i]!=null && a.equals(b[i].name)){
j=1;
break;
}
if(j==1)
System.out.println(b[i]);
else
System.out.println("查无此姓名的成绩");
}
链表的姓名查询:
public void search(String name)
{
StudNode current=head;
int flag=-1;
while(current!=null)
{
if(current.getName().equals(name))
{
System.out.print(current);
flag=1;
}
current=current.getNext();
}
if(flag==-1)
System.out.println("没有此学生信息!!");
}
public void search(String name)
{
StudNode current=head;
int flag=-1;
while(current!=null)
{
if(current.getName().equals(name))
{
System.out.print(current);
flag=1;
}
current=current.getNext();
}
if(flag==-1)
System.out.println("没有此学生信息!!");
}
这两个都是从头开始查呀..都是从第一个元素开始查...直到查到符合的就打印出来吧? 展开
public static void search(String a,students b[]){
int i;
int j=0;
for(i=0;i<b.length;i++)
if(b[i]!=null && a.equals(b[i].name)){
j=1;
break;
}
if(j==1)
System.out.println(b[i]);
else
System.out.println("查无此姓名的成绩");
}
链表的姓名查询:
public void search(String name)
{
StudNode current=head;
int flag=-1;
while(current!=null)
{
if(current.getName().equals(name))
{
System.out.print(current);
flag=1;
}
current=current.getNext();
}
if(flag==-1)
System.out.println("没有此学生信息!!");
}
public void search(String name)
{
StudNode current=head;
int flag=-1;
while(current!=null)
{
if(current.getName().equals(name))
{
System.out.print(current);
flag=1;
}
current=current.getNext();
}
if(flag==-1)
System.out.println("没有此学生信息!!");
}
这两个都是从头开始查呀..都是从第一个元素开始查...直到查到符合的就打印出来吧? 展开
展开全部
接楼上:准确的来说,你的问题是一个数据结构上的问题.
首先你要区分一下物理上的存储结构 与 逻辑上的数据结构
物理上的存储结构
链式存储结构
顺序存储结构
逻辑上的数据结构
线性数据结构 :单链表 双向链表 循环列表(栈 队列 ...)
树:普通树 特殊树
查找表 : 静态查找表,动态查找表
图:有向图 ...
任何逻辑上的数据结构要在计算机上表示时,都必须根据自己的需求选择一种物理上的存储结构,然后根据逻辑数据结构的特性进行存储等等操作.
对于物理上的存储结构而言
顺序存储结构 : 只要知道基址地址,就可以通过数学计算出任一元素 的地址.
链式存储结构: 上下家不能越级联系,你知道爸爸是谁,但是不知道爷爷是谁,想找爷爷只能通过爸爸.(下一个结点的地址存储在上一个结点中)
这种特性是由于其物理实现决定的,目前暂时看没有办法改变.
回过头来看你的问题中两个关键的概念定义:
链表:以链式存储结构存储的线性表叫做链表
顺序表:以顺序存储结构存储的线性表叫做顺序表
所以:
顺序表可以随即存取任一元素.而链表在绝大部分情况下都需要遍历查找.
展开全部
准确的来说,你的问题是一个数据结构上的问题,并不是Java语言的问题
其实你的理解方式错了,你不能从编码的角度来考虑顺序表和链表的区别,应该从他们的实现角度来考虑:
1.顺序表在物理上是占用一段连续的内存(必须在内存上是连续的,不能说中间突然断开,这是顺序表与链表的主要区别)。因为我们都知道内存有内存地址,所以顺序表只要知道第一个元素的内存地址,再通过简单的加减就能找到任意一个元素了,所以叫做随机存取;
2.链表在分配存储的时候却很灵活,并不要求连续。但是要如何找到这个元素的下一个元素呢,这时候就再增加一个域来指向下一个元素的地址(这就是为什么它叫做链表的原因,指向下一个元素的指针就想一根一根的链条将整个集合链接起来)。所以链表要找到特定的元素的话,必须要知道上一个元素,再通过上一个元素的指针域找到该元素,以此类推,所以只能从第一个元素开始,一个一个的找,才能找到特定元素。
即兴回答,难免有疏漏和不清楚的地方,希望我表达清楚了
其实你的理解方式错了,你不能从编码的角度来考虑顺序表和链表的区别,应该从他们的实现角度来考虑:
1.顺序表在物理上是占用一段连续的内存(必须在内存上是连续的,不能说中间突然断开,这是顺序表与链表的主要区别)。因为我们都知道内存有内存地址,所以顺序表只要知道第一个元素的内存地址,再通过简单的加减就能找到任意一个元素了,所以叫做随机存取;
2.链表在分配存储的时候却很灵活,并不要求连续。但是要如何找到这个元素的下一个元素呢,这时候就再增加一个域来指向下一个元素的地址(这就是为什么它叫做链表的原因,指向下一个元素的指针就想一根一根的链条将整个集合链接起来)。所以链表要找到特定的元素的话,必须要知道上一个元素,再通过上一个元素的指针域找到该元素,以此类推,所以只能从第一个元素开始,一个一个的找,才能找到特定元素。
即兴回答,难免有疏漏和不清楚的地方,希望我表达清楚了
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
顺序表就是数组,有数组下标可以直接查到第i个数据
链表只能从第一个数据开始依次查询
链表只能从第一个数据开始依次查询
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询