1278 - C语言11.14

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

建立一个链表,每个节点包括一个学号信息。将这个链表按逆序排列并输出,即将链表头作为链尾,链表尾作为链头。

题目输入

第一行有一个整数n,表示链表中的节点个数。保证n不超过100。

之后的n行每行有1个整数,表示每个节点对应的学号信息。

题目输出

输出逆序排列的链表,每行一个整数表示节点的学号信息。

请注意行尾输出换行。

输入/输出样例

输入格式

5
101
103
105
102
104

输出格式

104
102
105
103
101

C语言解答

#include <stdio.h>
int main()
{
	int n,k,j,a[100];
	scanf("%d",&n);
	for (k=0;k<n;k++)
		scanf("%d",&a[k]);
	for (j=n-1;j>=0;j--)
		printf ("%d\n",a[j]);
	return 0;
}

C++解答

#include <stdio.h>
#include <stdlib.h>
struct node {
	int num;
	struct node * next;
};
int main() {
	struct node *head, *tail, *newhead, *p, *pa;
	int n, i;
	scanf("%d", &n);
	/* 读入a链表中的n个人的信息 */
	head = tail = NULL;
	for (i = 0;i < n;i++) {
		p = (struct node *)malloc(sizeof(struct node));
		scanf("%d", &p->num);
		if (head == NULL) {
			head = tail = p;
		} else {
			tail->next = p;
			tail = p;
		}
	}
	tail->next = NULL;
	/* 遍历链表的每一个节点,将其添加到新的逆序链表的最前端 */
	newhead = NULL;
	p = head;
	while (p != NULL) {
		pa = p->next;
		if (newhead == NULL)
			p->next = NULL;
		else
			p->next = newhead;
		newhead = p;
		p = pa;
	}
	/* 将处理后的链表进行输出 */
	p = newhead;
	while (p != NULL) {
		printf("%d\n", p->num);
		p = p->next;
	}
	return 0;
}

Java解答



import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

public class Main {
   private static Scanner s = new Scanner(System.in) ;
   public static void main(String[] args) {
      int num = s.nextInt() ;
      List<Integer> list = new LinkedList<Integer>() ;
      if(num<=100){
      for (int i = 0; i < num; i++) {
		list.add(s.nextInt()) ;
	  }
      for (int i = list.size()-1; i >=0 ; i--) {
		 System.out.println(list.get(i));
	  }
      }
   }
}