#include<stdio.h>#include<stdlib.h>//创建一个单链表 typedefstructstudent{int score;structstudent*next;} LinkList;//链表的创建
LinkList *creat(){int n;printf("please input number to list Length\n");scanf("%d",&n);//定义结构体指针
LinkList *head,*node,*end;//开辟表头空间
head =(LinkList *)malloc(sizeof(LinkList));//开辟成功判断 if(!head){printf("ERROR\n");}else{printf("OK\n");}
end = head;printf("please input %d numbers\n", n);for(int i =0; i < n ; i ++){
node =(LinkList *)malloc(sizeof(LinkList));scanf("%d",&node->score);
end->next = node;
end = node;}
end->next =NULL;printf("创建链表成功\n");return head;}//更改链表中某个位置的值 voidchange(LinkList *L){int i =0, n;printf("输入你想更改的数字位置\n");scanf("%d",&n);while(i < n && L !=NULL){
L = L->next;
i ++;}if(L !=NULL){printf("输入你要改的数\n");scanf("%d",&L->score);}else{printf("ERROR");}}//删除链表中的某一个数 voiddeleteOne(LinkList *L){
LinkList *P;int i =0, n;printf("输入你想删除的数字位置\n");scanf("%d",&n);while(i < n -1&& L !=NULL){
L = L->next;
i ++;}if(L !=NULL){
P = L->next;
L->next = P->next;free(P);printf("删除成功\n");}else{printf("ERROR");}}//链表的插入 voidInsertList(LinkList *L){
LinkList *p;int n, m;printf("please input insert location\n");scanf("%d",&n);printf("please input insert you change number\n");scanf("%d",&m);//开辟待插入的空间
p =(LinkList *)malloc(sizeof(LinkList));int i =0;while(i < n -1&& L !=NULL){
L = L->next;
i ++;}
p->score = m;
p->next = L->next;
L->next = p;printf("插入成功\n");}//查找某元素在链表出现了多少次 voidsearchList(LinkList *L){int count =0, n;
L = L->next;printf("please input you search number\n");scanf("%d",&n);if(L->next ==NULL&& L->score == n){
count =1;}while(L->next !=NULL){if(L->score == n){
count ++;}
L = L->next;}printf("have %d number is %d\n", count, n);}//遍历链表 voidTraverseList(LinkList *L){while(L->next !=NULL){
L = L->next;printf("%d ", L->score);}printf("\n");}//销毁链表 voidRuinList(LinkList *L){
LinkList *p;while(L->next !=NULL){
p = L->next;free(L);
L = p;}printf("销毁成功\n");}//清空链表 voiddeletall(LinkList *L){
LinkList *p,*q;
p = L->next;while(p->next !=NULL){
q = p->next;free(p);
p = q;}
L->next =NULL;printf("链表已清空\n");}intmain(){int n, m;
LinkList *L =creat();TraverseList(L);change(L);TraverseList(L);deleteOne(L);TraverseList(L);InsertList(L);TraverseList(L);deletall(L);TraverseList(L);InsertList(L);TraverseList(L);searchList(L);RuinList(L);}