#include <stdio.h>
#include <stdlib.h>
typedef struct LNode{ //定义单链表结点类型
int data; //每个结点存放一个数据元素
struct LNode *next; //指针指向下一个结点
}LNode,*LinkList;
int main(){
bool InitList(LinkList &L);
LinkList L; //声明一个指向单链表的指针
InitList(L); //初始化一个空表
LinkList List_TailInsert(LinkList &L);
List_TailInsert(L);
LNode *p;
p=L;
while(p->next!=NULL){
p=p->next;
printf("%d\n",p->data);
}
return 0;
}
//初始化一个单链表(带头结点)
bool InitList(LinkList &L){
L =(LNode *)malloc(sizeof(LNode)); //分配一个头结点
if(L==NULL){
return false;
}
L->next = NULL; //头结点之后暂时还没有结点
return true;
}
//正向建立单链表
LinkList List_TailInsert(LinkList &L){
int x; //设置元素类型为整形
L =(LinkList) malloc(sizeof(LNode)); //创建头结点头指针指向头结点
LNode *s,*r=L; //r为表尾指针
scanf("%d",&x); //输入结点的值
while(x!=999){ //输入999表示结束
s =(LNode *) malloc(sizeof(LNode));
s->data =x;
r->next=s;
r=s; //指向新的表尾结点
scanf("%d",&x);
}
r->next =NULL; //尾结点指针置空
return L;
}