单链表的建立(头插法和尾插法)
LinkList HeadInsert(LinkList &L);//逆向建立单链表
// 原理:初始化一个单链表 然后 以头结点为目标(指定节点) 对其进行后插操作
LinkList TailInsert(LinkList &L);//正向建立单链表
下面展示一些 代码。
//头插法逆向建立单链表
// 原理:初始化一个单链表 然后 以头结点为目标(指定节点) 对其进行后插操作
LinkList HeadInsert(LinkList &L){
LNode *s;
int x;
L = (LNode *)malloc(sizeof(LNode));
L->next = NULL;// 这句在头插法里必不可少的 因为 L->next的数据在下面会用到 如果不初始化就会内存中遗留的数据
cout<<"请输入一个数字:"<<endl<<"(输入111时表示输入结束)";
cin>>x;
while(x != 111){
s = (LNode *)malloc(sizeof(LNode));
s->data = x;
s->next = L->next;
L->next = s;
cout<<"请输入一个数字:"<<endl<<"(输入111时表示输入结束)";
cin>>x;
}
return L;
}
// 尾插法正向建立单向链表
LinkList TailInsert(LinkList &L){
int x;
L = (LNode *)malloc(sizeof(LNode));
LinkList s, r = L;
L->next = NULL; //尾插法有无这句都可以 因为用不到L->next中的数据 它会被直接覆盖掉
cout<<"请输入一个数字:"<<endl<<"(输入111时表示输入结束)";
cin>>x;
while(x != 111){
s = (LNode *)malloc(sizeof(LNode));
s->data = x;
r->next = s;
r = s;// r指向新的表尾结点
cout<<"请输入一个数字:"<<endl<<"(输入111时表示输入结束)";
cin>>x;
}
r->next = NULL;//尾结点指针置空
return L;
}