#include<iostream>
/*
单链表的操作
*/
typedef int Elemtype;
typedef struct LNode { //一个结点LNode,由数据域data和后继指针*next组成
Elemtype data; //数据域
LNode *next; //指向下一个结点的指针
}LNode, *LinkList; //指向LNode的指针LinkList
/*
头插法建立单链表,读入数据的顺序与生成的链表中的结点顺序相反
*/
//头插法创建单链表
LinkList createHeaderList(LinkList &L) {
LNode *s; //辅助指针即下一个结点的指针
int x; //要输入的数据
L = (LinkList)malloc(sizeof(LNode)); //创建带头结点的链表
L->next = NULL; //头结点的后继指针指向空(初始为空链表)
scanf("%d", &x); //输入结点的值
while (x != 999) { //设x不等于999
s = (LNode*)malloc(sizeof(LNode)); //申请内存空间,并强制转换
s->data = x; //添加数据
s->next = L->next; //第一个指针的后继指向空
L->next = s; //头指针的后继指向第一个结点
scanf("%d", &x); //读入下一个结点的值(即数据域)
}
return L;
}
/*
尾插法建立单链表,读入数据的顺序与生成的链表中结点的顺序是相同的
*/
//尾插法创建单链表
LinkList createFooterList(LinkList &L) {
int x;
L = (LinkList)malloc(sizeof(LNode));
LNode *s, *r = L; //r为表尾指针,指向表尾,因开始表为空表,所以r指向L
scanf("%d", &x);
while (x != 99