#include<iostream>
using namespace std;
#include<stdlib.h>
#define ok 1
#define error 0
typedef int ElemType;
typedef int status;
//单链表的存储结构
typedef struct LNode{
ElemType data;//结点的数据域
struct LNode *next; //结点的指针域
}LNode,*LinkList; //定义结构体变量。这俩实际上一样都是变量
//就是*LinkList定义变量的时候 比如说指针,不用带*
//单链表的初始化
status InitList(LinkList &L){
L=new LNode;//生成新节点作为头结点,用头指针指向头结点
L->next=NULL;
return ok;
}
//前插法创建单链表
LinkList CreateList_R(LinkList &L,int n){
LinkList p;
L=new LNode;
L->next=NULL;//先建立一个带头结点的空链表
//采用头指针的思想,弄个尾指针
LinkList r;
r=L;//尾指针指向头结点
for(int i=0;i<n;i++){
p=new LNode;
cin>>p->data;
p->next=NULL;r->next=p; //将新结点*p插入尾结点之后
r=p;//将最后一个结点作为新的尾结点
}
}
void print(LinkList L){
LinkList p;
for(p=L->next;p;p=p->next){
cout<<p->data<<endl;
}
}
int main(){
LinkList L,q;
InitList(L);
CreateList_R(L,5);
print(L);
return 0;
}
可见后插法顺序与输入顺序一致