带头节点的链表 数据结构课程 范例

版权声明:转载请注明原文地址即可,要是本文对您有些许帮助的话,请您在下方点个赞,谢谢啦ヾ(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');
}

猜你喜欢

转载自blog.csdn.net/qq_33583069/article/details/88953468