定义单向链表:输入若干个正整数(输入-1为结束标志),要求按输入数据的逆序并输出。
输入输出示例:括号内为说明
输入样例:
1 2 3 4 5 6 7 -1
输出样例:
7 6 5 4 3 2 1
#include<stdio.h>
#include<stdlib.h>
typedef struct Node {
int data;
struct Node *next;
}Node, *LinkedList;
LinkedList init(LinkedList node) {//初始化链表
//node
node->next = NULL;
node->data = -1;
return node;
}
int insert(int num, LinkedList node) {//插入节点
LinkedList s = (LinkedList)malloc(sizeof(Node));
s->data = num;
s->next = node->next;
node->next = s;
return 1;
}
void output(LinkedList L) {//输出链表
LinkedList p = L->next;
while (p != NULL) {
printf("%d", p->data);
if (p->next != NULL) {
printf(" ");
}
p = p->next;
}
}
void trans(LinkedList L) {
LinkedList p, q, pr;
p = L->next;
q = NULL;
L->next = NULL;
while (p) {
pr = p->next;
p->next = q;
q = p;
p = pr;
}
L->next = q;
}
void deleteLinkedList(LinkedList node) {
while (node != NULL) {
LinkedList p = node;
node = node->next;
free(p);
}
}
int main() {
int number;
LinkedList L = (LinkedList)malloc(sizeof(Node));
init(L);
LinkedList p = L;
while (true) {
scanf("%d", &number);
if (number == -1) {
break;
}
insert(number, p);
p = p->next;
}
trans(L);
output(L);
deleteLinkedList(L);
return 0;
}