键盘输入若干个整数,按输入数据逆序建立一个带头结点的单链表。

2025-05-19 19:20:40
推荐回答(2个)
回答1:

不知道下面的这个程序符不符合你的要求!

package com.zhang.ask;

import java.util.ArrayList;

import java.util.Scanner;

public class OverNum {

//用于存储输入的数据

private static ArrayList inputNum=null;

public static void main(String[] args) {

// TODO Auto-generated method stub

OverNum.overInputNum();

}

public static void overInputNum()

{

inputNum=new ArrayList();

Scanner keybord=new Scanner(System.in);

//循环读取数据

while(true)

{

System.out.print("请输入一个整数或者输入q结束输入:");

String in=keybord.nextLine();//读取一行输入

if("q".equals(in))

{

break;

}

else

{

try {

inputNum.add(Integer.parseInt(in));

} catch (NumberFormatException e) {

System.out.println("对不起,你输入的内容不合法!");

continue;

}

}

}

//循环输出数据

for(int i=inputNum.size()-1;i>=0;i--)

{

if(i!=0)

{

System.out.print(inputNum.get(i)+"--->");

}

else

{

System.out.print(inputNum.get(i));

}

}

}

}

回答2:

#include
#include
#define bs -1
typedef int db;
typedef struct xiangjia
{
db data;
struct xiangjia *next;
}lb;
lb *tou()
{
lb *L;
L=(lb *)malloc(sizeof(lb));
L->next=NULL;
return L;
}
void get(lb *l)
{
lb *L,*h;
db x;
L=l;
printf("请输入你的数据,并在末尾输入-1以示结束\n\n");
scanf("%d",&x);
while(x!=bs)
{
h=(lb *)malloc(sizeof(lb));
h->data=x;
h->next=L->next;
L->next=h;
scanf("%d",&x);
}
}
void put(lb *l)
{
lb *L;
L=l;
printf("链表中的数据有:\n");
while(L->next!=NULL)
{
printf("%d",L->next->data);
L=L->next;
if(L->next!=NULL)
{
printf("->");
}
}
printf("\n");
}

main()
{
lb *a;
a=tou();
get(a);
printf("【第一个链表:】");
put(a);
}