数据结构创建结构体学⽣表c语⾔
要求:
以单链表形式创建⼀个学⽣表或图书表,并能实现相关的创建、销毁、清空、查、插⼊和删除等算法。需要定义学⽣表或图书表的结构体
1. linklist.h代码:
typedef struct link_node//定义结构体,包含学⽣学号语⽂数学英语成绩
{
int number,cgrade,mgrade,egrade;
struct link_node *next;
}node,*linklist;
linklist createlist(int n)//创建单链表
{
node *p,*s;
linklist head=(linklist)malloc(sizeof(node));
p=head;
for(int i=0; i<n; i++)//输⼊单链表中各元素的值
{
s=(linklist)malloc(sizeof(node));
printf("请输⼊第%d个学⽣的学号:\n",i);
scanf("%d",&s->number);
printf("请输⼊第%d个学⽣的语⽂,数学,英语成绩:\n",i);
scanf("%d %d %d",&s->cgrade,&s->mgrade,&s->egrade);
p->next=s;
p=s;
}
p->next=NULL;
head=head->next;
return head;//返回单链表头结点
}
void displaylist(linklist q)//顺序显⽰单链表全部元素的值
{
unsigned int i=0;
while(q)
{
printf("\n第%d个学⽣的学号为:\n",i);
printf("%d\n",q->number);
printf("第%d个学⽣的语⽂,数学,英语成绩为:\n",i);
printf("%d %d %d\n",q->cgrade,q->mgrade,q->egrade);
q=q->next;
i++; }
printf("\n");
}
void findlist(linklist q,unsigned int num)//查学⽣序号为num的学⽣的学号及成绩
{
unsigned int o=0;
while(o!=num)//查
{
q=q->next;
o++;
}
printf("\n第%d个学⽣的学号为:\n",num);
printf("%d\n",q->number);
printf("第%d个学⽣的语⽂,数学,英语成绩为:\n",num);
printf("%d %d %d\n",q->cgrade,q->mgrade,q->egrade);
}
void deletelist(linklist q,unsigned int num)//删除序号为num的学⽣的所有信息
{
{
unsigned int o=0;
while(o!=num-1)//查
{
q=q->next;
o++;
}
q->next=q->next->next;//跳过当前结点
}
void replacelist(linklist q,unsigned int num)//更改序号为num的学⽣的信息
{
unsigned int o=0;
while(o!=num)//查
{
q=q->next;
o++;
}
printf("\n请重新输⼊学号:\n");
scanf("%d",&q->number);
printf("请重新输⼊成绩:\n");
scanf("%d %d %d",&q->cgrade,&q->mgrade,&q->egrade);
}
void insertlist(linklist q,unsigned int num)//在序号为num的位置插⼊新的学⽣的信息{
unsigned int o=0;
while(o!=num-1)//查
{
q=q->next;
o++;
}
linklist n=(linklist)malloc(sizeof(node));
printf("\n请输⼊学号:\n");
scanf("%d",&n->number) ;
printf("请输⼊语⽂,数学,英语成绩:\n");
scanf("%d %d %d",&n->cgrade,&n->mgrade,&n->egrade);
n->next=q->next;
q->next=n;
}
2 . linklist_main.c代码
#include<stdio.h>
#include<stdlib.h>
#include <malloc.h>
#include "linklist.h"
int main()
{
unsigned int n,m,a;
printf("请输⼊学⽣数量\n");
scanf("%d",&n);
linklist v=createlist(n);
while(1)
{
printf("\n请选择功能:\n");
printf("\n1:查  2:删除  3:更改  4:插⼊  5:显⽰\n");  scanf("%d",&a);
switch(a)
{
case 1: printf("请输⼊学⽣序号:\n");
scanf("%d",&m);
findlist(v,m);break;
case 2: printf("请输⼊学⽣序号:\n");
scanf("%d",&m);
deletelist(v,m);break;
case 3: printf("输⼊学⽣序号:\n");
scanf("%d",&m);
replacelist(v,m);break;
case 4: printf("输⼊插⼊序号:\n");
scanf("%d",&m);
insertlist(v,m);break;
case 5: displaylist(v);break;
default :printf("请重新选择功能:\n");
}
}
return 1;
}c语言listinsert函数
运⾏结果:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。