数据结构-第2章-课本程序

 

 答案思路:使用创建单链表LinList xxx=new LinList()
再利用for循环以及insert函数,在i位置,不断插入new Integer(i+1)
再利用delete(x)删除指定位置的元
再利用for循环,在小于linList,size的范围内,进行System.out.print(linList.getData(i))的取数操作
外边嵌套一层try{} catch(Exception e){System.out.println(e.getMessage());

 

注意:不同于顺序表SeqList可以直接用x.equals(y)加上while来实现判断是否等于(除非先把Object类转化为Integer,然后再对xx.intValue进行比较
主要原因是链表中结点Node包含了data和next两个成员变量,所以必须定义自己的比较函数

此处需要构造关于参数Object 的compare(Object o1,Object o2)的函数

 

由于o1,o2已经是Object类,所以不能直接new Integer o1;而是需要再赋值给一个新变量Integer co1=(Integer)o1;
int xx=co1,intValue();

之后就可以借此正常比较了,由此compare函数创立完毕

注意:xxx.data是Object类,compare(xx,xx)中装在的均是Object类

 

 这一步调用是在只创立了一个空的链表LinList myList=new LinList
再利用之前的orederInsert()函数不断插入new Integer(s[i])

 先初始化pre=myList.haed
curr=myList.head.next

之后再以curr和xx.next其实就是在不断的向后边移动(别读错方向了)

Q1:Node结点这么使用干什么

 

设计一个对于单链表中数据元素进行排序的操作,并且只是利用原有的结点,不额外增加新结点

有的算法看着题目简单,其实里边很有深意的

特殊之处在于不能设置额外的新节点,所以此处先将链表L置空,然后再调用

Q2:都置空了难道还有保存的吗?

curr=L.head.next之后相当于curr.next不断,就是可以复现整个L
所以curr实现了一次截断
L置空之后,剩余信息在curr.data中不断输入

 先做一个linListSort(LinList L,Comparator mc)
其中调用包含了orderInsert(L,curr,data,mc)用于排序
排序后内部使用curr=curr.next进行跳转,判断条件为curr!=null

 建立顺序表,依次输入元素,然后再删除指定元素,然后再显示
使用SeqList xx =new SeqList(xxx)
插入xxx.insert(i,new Integer(i+1))
删除xx.delete(x)

 

 考察顺序表如何与多形式的结合
顺序表的建立以行作为变数进行如student[]

 提取内部具体数值,需要介入long getNumber
String getName
String getSex
int getAge

 命令与赋值就是正常java里边的操作

利用xx.insert(i,student[i])把整个数组行student[i]插入其中

Q:想要调用后面定义的函数getNunmber(0,getNmae()xxx之类的还需要用上Student类去定义一个st对象,然后取出数值xx.getData(i)才可以操作

 

 设计一个函数,要求把顺序表第一个出现的数据元素x删除

 在顺序表中循环,一旦(第一个)寻找到数据元素x,则停止,并用delete删除,后面的所有元素往前面移动一位(Q:还需要删除如此多次一举吗?)
——用了delete(i)就不需要再写上后边挨个往前边移动了,已经被涵盖在了其中了for循环放L.size之后,进行挨个寻找xx.equals(L.getData(i))注意的是xx为目标数据元素,equals()内部的L。getData(i)为
一直在变换的元素遍历到最底就是i==L.size,未找到则return 0

否则就执行删除操作继续用for循环inseet生成Intger(i+1)来实验,尝试上一步定义的函数dataDelet()

 

 相比于上一题的区别在于,都是顺序
表中的查找和搜索删除,但是只要是
,不管是不是第一个,也就是在这一
步中delete一直存在,哪怕找到了也
不会break
利用for循环对准L.size中
如果发生了xx.equals(L.getData(i))
的情况
则执行L.delete(i)
并且i--,在其内部tag=0
i--的原因是,如果不作处理i则会跳
过往前全部挪动一位的数值,会造成
一位缺漏(虽然只有1位)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值