永发信息网

各位java的高手啊 我们老师说这个是头插法 怎样改为尾插法呢 帮忙改一下代码呗

答案:2  悬赏:10  手机版
解决时间 2021-02-18 01:33
class node
{
int data;
node next;
node(int data,node next){this.data=data;this.next=next;}
node(int data){this.data=data;}
}
class ilink
{
node head;
ilink(){}
void insert(int a)
{
if(head==null) {head=new node(a);head.next=null;}
else
{
head=new node(a,head);
}
}
void print()
{
while(head!=null)
{
System.out.print(head.data+"\t");
head=head.next;
}
}
}
class testilink
{
public static void main(String[] args)
{
int[] b={1,2,3,4,5};
ilink il=new ilink();
for(int i=0;i<5;i++)
il.insert(b[i]);
il.print();
}
}
最佳答案
package com.test;

class node {
int data;
node next;

node(int data, node next) {
this.data = data;
this.next = next;
}

node(int data) {
this.data = data;
}
}

class ilink {
node head;

ilink() {
}

void insert(int a) {
if (head == null) {
head = new node(a);
head.next = null;
} else {
node temp = head;
while (temp.next != null) {
temp = temp.next;
}
node newNode = new node(a);
newNode.next = null;
temp.next = newNode;
}
}

void print() {
while (head != null) {
System.out.print(head.data + "\t");
head = head.next;
}
}
}

public class Test {
public static void main(String[] args) {
int[] b = { 1, 2, 3, 4, 5 };
ilink il = new ilink();
for (int i = 0; i < 5; i++)
il.insert(b[i]);
il.print();
}
}
就是把ilink中的insert改了一下,原来的头插法是把后来的数字放在链表的最开始,这样程序输出是数组的倒序5 4 3 2 1,尾插法是把新插入的数字放在链表的最后面,这样输出为1 2 3 4 5。
全部回答
单链表也称为线性链表或单向链表,它是线性表的链接存储表示。 单链表的结构第一个结点(亦称为首元结点)的地址可以通过链表的头指针first找到,其他结点的地址则在前驱结点的link域中,链表的最后一个结点没有后继,在结点的link域中放一个空指针null,null在中被定义为数值0,因此对单链表的任一结点的访问必须首先根据头指针找到首元结点,再按各节点的link域中存放的指针顺序寻找。 头指针first为空的链表为空表,该链表一个结点也没有,相对的,头指针first不为空且首元结点存在的单链表为非空表,表中至少有一个节点。 单链表的结构定义 1 typedef int datatype; 2 typedef struct node 3 { 4 datatype data; 5 struct node* link; 6 }linknode,* linklist 尾插法创建一个单链表 1 #include 2 #include 3 using namespace std; 4 void insertrear(linklist& first,linknode* & last,datatype endtag) 5 { 6 //endtag是约定的输入序列结束的标志,如果输入序列是正整数,endtag可以使0或负数 7 //如果输入序列是字符,endtag可以是字符集中不会出现的字符如"\0" 8 datatype val;cin>>val; 9 if(val==endtag) last->link=null; 10 else 11 { 12 last=new linknode; 13 if(!last) 14 { 15 cerr<<"存储分配错误!\n";exit(1); 16 } 17 last->data=val; 18 insertrear(first,last->link,endtag); 19 } 20 }; 21 22 int main() 23 { 24 linklist l=new linknode; 25 if(!l) {cerr<<"存储分配错误!\n";exit(1);} 26 cin>>l->data; 27 linknode* rear=l; 28 insertrear(l,rear->link,l->data); 29 return 0; 30 } 在程序中还设置一个尾指针last,它总是指向新建表中最后一个结点,新结点链接到它所链尾的后面。last设定为引用型指针,它要把新建结点地址或是空地址传送到前一结点的link域中。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
【熊组词】熊的组词
魏家坪我想知道这个在什么地方
申请了个微信号,绑定了手机号,登陆不上,说
以烦忧为话题的作文
别克英朗主门锁遥控后自动解解锁
李白诗“解释春风无限恨,沉香亭北倚栏杆”中
现在三线城市学开车加办C1驾照大概需要多长时
谭家塆地址在什么地方,想过去办事
他们都说纹身有讲究,我喜欢蝎子,可是就是普
工业分散现象主要表现在AA. 电子元件厂与电子
豪派公寓地址在哪,我要去那里办事
OPPOA57和华为7plas哪个好
房子过户手续费多少钱
想问夏普机的定时开关机
二龙山乡永合卫生院在什么地方啊,我要过去处
推荐资讯
夏天大棚种辣椒铺地膜可以吗?
已知,三角形ABC中,AB=AC,E为AB上一点,F在AC的
华鹰驾校报名处在哪里啊,我有事要去这个地方
急急急,国庆期间去山西旅游,需要带什么呢?
我只有一块钱,然而做车要2块,怎么办?
我的户户通,信号质量都达到90%以上,怎麽只
win2012怎么设置ftp站点
含有"清"和"和"字的对联,请求各位亲们!
装修的水管打破了,热熔接好后安全吗?
从义乌到信阳坐火车一共有多少站
求10m大小完结小说,
荷兰红该怎样种
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?