#define _CRT_SECURE_NO_WARNINGS //solve the scanf error problems
#include
#include
typedef int ElemType;
typedef struct LNode {
ElemType data;
struct LNode* next;
}LNode,*LinkList;
LinkList CreatList1(LinkList& L) {
LNode* s; int x;
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
scanf(“%d”, &x);
while (x != 9999) {
s = (LinkList)malloc(sizeof(LNode));
s->data = x;
s->next = L->next;
L->next = s;
scanf(“%d”, &x);
}
return L;
}
LinkList CreatList2(LinkList &L){
int x;
L = (LinkList)malloc(sizeof(LNode));
LinkList s, r = L;
scanf(“%d”, &x);
while (x != 9999) {
s = (LinkList)malloc(sizeof(LNode));
s->data = x;
r->next = s;
r = s;
scanf(“%d”, &x);
}
r->next = NULL;
return L;
}
LinkList GetElem(LinkList L, int i) {
int j = 1;
LinkList p = L->next;
if (0 == i) {
return L;
}
if (i < 1) {
return NULL;
}
while (p && j
p = p->next;
j++;
}
return p;
}
LinkList locateElem(LinkList L, ElemType e) {
LinkList p = L->next;
while (p != NULL&&p->data !=e) {
p = p->next;
}
return p;
}
bool ListFrontInsert(LinkList L, int i, ElemType e) {
LinkList p = GetElem(L, i - 1);
if (NULL == p) {
return false;
}
LinkList s = (LinkList)malloc(sizeof(LNode));
s->data = e;
s->next = p->next;
p -> next = s;
return true;
}
bool ListDelect(LinkList L, int i) {
LinkList p = GetElem(L, i - 1);
if (p == NULL) {
return p;
}
LinkList q=p->next;
p->next = q->next;
free(q);
q = NULL;
return true;
}
void PrintList(LinkList L) {
L = L->next;
while (L != NULL) {
printf(“%3d”, L->data);
L = L->next;
}
printf(“n”);
}
int main() {
LinkList L;
LinkList search;
//CreatList1(L);
CreatList2(L);
PrintList(L);
search = GetElem(L, 2);
if (search != NULL) {
printf(“%dn”, search->data);
}
search = locateElem(L, 5);
if (search != NULL) {
printf(“%dn”, search->data);
}
ListFrontInsert(L, 2, 99);
PrintList(L);
ListDelect(L, 3);
PrintList(L);
}



