#include <stdio.h>
#include <stdlib.h>
// 单链表的存储结构
typedef struct Node {
int data;
struct Node* next;
}Node,*LinkList;
/*
* Node,*LinkList 应用的时候的区别
* Node: 使用的时候是 Node *
* *LinkList: 使用的时候是 LinkList
* 写的习惯:
* LinkList: 用来定义函数,和函数参数,定义表或表的指针
* Node*: 用来定义指针,和开辟空间
*/
// 初始化单链表
LinkList InitList () { // 要生成一个链表,注意写法
LinkList L=(Node *) malloc (sizeof(Node));
L->next = NULL;
return L;
}
// 头插法
void creatList(LinkList L) {
Node * s;
int data;
printf("请输入数字,输入-1代表结束:");
while(1) {
scanf("%d",&data);
if(data == -1) break;
else {
s = (Node *) malloc (sizeof(Node));
s->data = data;
s->next = L->next;
L->next = s;
}
}
}
// 打印链表
// void printList(Node * head) {
void printList(LinkList L) {
Node * r;
// r= head->next;
r= L->next;
while(r) {
printf(" -> %d",r->data);
r = r->next;
}
printf("\n");
}
int main() {
LinkList LA;
LA = InitList(); // 初始化单链表
creatList(LA); // 创建单链表
printList(LA); // 输出链表
return 0;
}