版权声明:转载请注明原文地址即可,要是本文对您有些许帮助的话,请您在下方点个赞,谢谢啦ヾ(o◕∀◕)ノヾ https://blog.csdn.net/qq_33583069/article/details/88953468
书上code
typedef struct{
char name[20];
float score;
}STD;
typedef struct{
STD data;
struct LNode *next;
}LNode,*LinkList;
int initLinkList(LinkList* L){
*L=(LinkList)malloc(sizeof(LNode))
if(*L==NULL)return 0;
(*L)->next=NULL;
}
int insertLinkList(LinkList L,int i,STD x){
LinkList p=L,a; int pos=0;
while(p!=NULL&&pos<i-1){p=p->next;pos++;}
if(p==NULL||pos>i-1){printf("插入位置不合理!\n");return 0;}
s=(LinkList)malloc(sizeof(LNode));
s->data=x; s->next=p->next; p->next=s; return 1;
}
int deleteLinkList(LinkList L,int i,STD *x){
LinkList q,p=L;int pos=0;
while(p->next!=NULL&&pos<i-1){p=p->next;pos++;}
if(p->next==NULL||pos>i-1){printf("链表为空或者删除位置不合理!\n");return 0;}
q=p->next; p->next=q->next; x=q->data; free(q); return 1;
}
int updateLinkList(LinkList L,int i,STD x){
LinkList p=L->next;int n=1;
while(p&&n<i){p=p->next;n++;}
if(p==NULL||n>i){printf("位置不合理,不能更新!\n");return 0;}
p->data=x; return 1;
}
int getLinkList(LinkList L,int i,STD* x){
LinkList p=L->next;int n=1;
while(p&&n<i){p=p->next;n++;}
if(p==NULL||n>i){printf("位置不合理,不能获取!\n");return 0;}
*x=p->data;return 1;
}
int locationLinkList(LinkList L,char *name){
LinkList p=L->next;int j=1;
while(p){
if(strcmp(p->data.name,name)){p=p->next;j++;}
else return j;
}
if(p==NULL)return 0;//return 0;
}
int linkListLength(Linklist L){
LinkList p=L->next;int n=0;
while(p){n++;p=p->next;}
return n;
}
int dispLinkList(LinkList L){
LinkList p=L->next;
if(p==NULL){printf("没有数据!\n");return 0;}
while(p){
printf("%10s%7.2f\n",p->data.name,p->data.scroe);
p=p->next;
}
return 1;
}
void createLinkList(LinkList *L){
int n=1;STD x;LinkList p;char yn;
initLinkList(L);
do{
printf("请输入第%d个学生的姓名和分数,用空格隔开:\n",++n);
scanf("%s%f\n",x.name,&x.score);
insertLinkList(*L,n,x);
printf("继续输入吗?Y/N:\n");
yn=getchar();
}while(yn=='Y'||yn=='y');
}
void frontCreateLinkList(LinkList* L){
int n=0;STD x;LinkList p;char yn;
initLinkList(L);
do{
printf("请输入第%d个学生的姓名和分数,用空格隔开:\n",++n);
scanf("%s%f\n",x.name,&x.score);
p=(LinkList)malloc(sizeof(LNode));
P->data=x;
p->next=(*L)->next;
(*L)->next=p;
printf("继续输入吗?Y/N:\n");
yn=getchar();
}while(yn=='Y'||yn=='y');
}
void rearCreateLinkList(Linklist* L){
int n=0;STD x;LinkList p,R;char yn;
initLinkList(L);
do{
printf("请输入第%d个学生的姓名和分数,用空格隔开:\n",++n);
scanf("%s%f\n",x.name,&x.score);
p=(LinkList)malloc(sizeof(LNode));
P->data=x;
p->next=NULL;
R->next=p;R=p;
printf("继续输入吗?Y/N:\n");
yn=getchar();
}while(yn=='Y'||yn=='y');
}