#include <stdio.h>
#include <stdlib.h>
// 链表结构定义
typedef struct Node {
int data;
struct Node* next;
}Node,*LinkList;
// 初始化链表
LinkList initList_2() {
LinkList L = (Node *) malloc (sizeof(Node));
L->next=NULL;
return L;
}
// 尾插法
void tailList (LinkList L) {
Node *r,*s; // *r:指向表尾,初始值指向头节点
r = L;
int data;
printf("尾插法,请输入内容,输入-1结束:");
while(1) {
scanf("%d",&data); // 注意这句话:这句话在循环内,不可以写到循环外边
if(data == -1) break;
s = (Node *) malloc (sizeof(Node));
s->data = data;
r->next = s;
r = s;
/* 这条判断语句的位置只能在上边位置,
* 如果写在这个位置,最后的 -1 就会输出
*/
// if(data == -1) break;
}
}
// 打印
void printList_2 (LinkList L) {
Node *r;
r = L->next;
while (r) {
printf("%d -> ",r->data);
r = r->next;
}
printf("\n");
}
// 主函数
int main () {
LinkList L;
L = initList_2(); // 初始化
tailList(L); // 尾插法
printList_2(L); // 打印
return 0;
}
推荐一个好用的在线编辑器: