#include<stdio.h>
#include<stdlib.h>
typedef struct Lnode {
int data;
struct Lnode* next;
}Lnode, * Linklist;
##初始化
bool InitList(Linklist& L) {
L = (Lnode*)malloc(sizeof(Lnode));
L->next = NULL;
return 1;
}
##尾插法建单链表
Linklist LinklistTail(Linklist & L) {
L = (Linklist)malloc(sizeof(Lnode));
L->next = NULL;
int x;
scanf_s("%d", &x);
Lnode* s, * r = L;
while (x != 9999) {
s = (Linklist)malloc(sizeof(Lnode));
s->data = x;
r->next = s;
r = s;
scanf_s("%d", &x);
}
r->next = NULL;
return L;
}
##头插法建单链表
Linklist LinklistHead(Linklist& L) {
L = (Lnode*)malloc(sizeof(Lnode));
L->next = NULL;
int x;Lnode* s;
scanf_s("%d", &x);
while (x != 9999) {
s = (Lnode*)malloc(sizeof(Lnode));
s->data = x;
s->next = L->next;
L->next = s;
scanf_s("%d", &x);
}
return L;
}
void printLinklist(Linklist L) {
Lnode* p = L->next;
while (p) {
printf("%d\n", p->data);
p = p->next;
}
}
bool InsertLnode(Linklist& L, int i, int e) {
Lnode* p = L;
int j = 0;
while (p != NULL && j < i - 1) {
p = p->next;
j++;
}
if (p == NULL) {
return false;
}
Lnode* s = (Lnode*)malloc(sizeof(Lnode));
s->data = e;
s->next = p->next;
p->next = s;
return true;
}
bool DeleteLnode(Linklist& L, int i) {
Lnode* p = L;
int j = 0;
while (p != NULL && j < i - 1) {
p = p->next;
j++;
}
if (p == NULL) {
return false;
}
Lnode* q = (Lnode*)malloc(sizeof(Lnode));
q = p->next;
p->next = q->next;
free(q);
return true;
}
Linklist GetElem(Linklist L, int Searchpos) {
if (Searchpos < 0)
return NULL;
Lnode* p = L;
int j = 0;
while (p != NULL && j < Searchpos) {
p = p->next;
j++;
}
return p;
}
Linklist locateElem(Linklist L, int search_E) {
Lnode* p = L->next;
while (p->data!= search_E&&p!=NULL) {
p = p->next;
}
return p;
}
int Length(Linklist L) {
int len = 0;
Lnode* p = L;
while (p->next != NULL) {
p = p->next;
len++;
}
return len;
}
int main() {
Linklist L;
LinklistHead(L);
printLinklist(L);
}
int main() {
Linklist L;
InitList(L);
InsertLnode(L,1,1);
InsertLnode(L, 2, 3);
InsertLnode(L,3,29);
InsertLnode(L, 4, 12);
InsertLnode(L, 5, 34);
InsertLnode(L, 6, 88);
printf("插入完成后显示为\n");
printLinklist(L);
DeleteLnode(L, 1);
printf("删除完后显示为\n");
printLinklist(L);
Linklist search;
Linklist searchlocate;
search = GetElem(L, 1);
if(search!=NULL)
printf("通过按位查找找到了%d\n", search->data);
searchlocate = locateElem(L, 88);
if(searchlocate!=NULL)
printf("成功通过按值查找找到了%d\n", searchlocate->data);
return 0;
}