📄 新建 文本文档.txt
字号:
#include<stdio.h>
#include<malloc.h>
#define null 0
struct student
{
int num;
char name[20];
char sex[4];
int age;
char add[30];
struct student *next;
};
int count=0;
void main()
{
struct student *creat(void);
struct student *insert(struct student *,struct student *);
struct student *del(struct student *,int);
void print(struct student *);
struct student *head,*s;
int del_num; //要是删除的学生的学号
int ch=0;
int goon=1,goc=1,gos=1;
while(goon==1)
{
printf("请选择要进行的操作:\n");
printf("1:建表 2:插入 3:删除\n");
scanf("%d",&ch);
if(ch==1) //建立链表
{
head=creat();
print(head);
}
else if(ch==2) //插入记录
{
while(goc==1)
{
printf("请按提示输入要插入的学生的信息:\n");
s=(struct student *)malloc(sizeof(struct student));
printf("学号:");
scanf("%d",&s->num);
printf("姓名:");
scanf("%s",s->name);
printf("性别:");
scanf("%s",s->sex);
printf("年龄:");
scanf("%d",&s->age);
printf("家庭住址:");
scanf("%s",s->add);
head=insert(head,s);
printf("是否继续插入?是(1)/否(0)");
scanf("%d",&goc);
}
}
else if(ch==3) //删除记录
{
while(gos==1)
{
printf("请输入要删除的学生的学号:");
scanf("%d",&del_num);
head=del(head,del_num);
printf("是否要继续删除?是(1)/否(0)");
scanf("%d",&gos);
}
}
else
printf("error!");
printf("是否要继续对表操作?是(1)/否(0)");
scanf("%d",&goon);
}
}
struct student *creat(void)
{
struct student *head;
struct student *p1,*p2;
int choice=1;
p1=p2=(struct student *)malloc(sizeof(struct student));
printf("请按提示输入学生的记录:\n");
head=null;
while(choice==1)
{
printf("学号:");
scanf("%d",&p1->num);
printf("姓名:");
scanf("%s",p1->name);
printf("性别:");
scanf("%s",p1->sex);
printf("年龄:");
scanf("%d",&p1->age);
printf("家庭住址:");
scanf("%s",p1->add);
count++;
if(count==1) head=p1;
else p2->next=p1;
p2=p1;
p1=(struct student *)malloc(sizeof(struct student));
printf("是否继续输入学生信息?是(1)/否(0)");
scanf("%d",&choice);
}
p2->next=null;
return (head);
}
struct student *insert(struct student *head,struct student *stud)
{
struct student *p0,*p1,*p2;
p1=head;
p0=stud;
if(head==null)
{
head=p0;p0->next=null;
}
else
{
while((p0->num>p1->num)&&(p1->next!=null))
{
p2=p1;
p1=p1->next;
}
if(p0->num<=p1->num)
{
if(head==p1) head=p0;
else p2->next=p0;
p0->next=p1;
}
else
{
p1->next=p0;
p0->next=null;
}
}
count++;
return(head);
}
struct student *del(struct student *head,int num)
{
struct student *p1,*p2;
if(head==null)
{
printf("空表!");
return (head);
}
p1=head;
while(num!=p1->num&&p1->next!=null)
{
p2=p1;
p1=p1->next;
}
if(num==p1->num)
{
if(p1==head) head=p1->next;
else p2->next=p1->next;
printf("已删除学号为%d的学生的记录!",num);
count--;
}
else
printf("无该学生的信息!");
return (head);
}
void print(struct student *head)
{
struct student *p;
printf("当前该表中工有%d条记录:\n",count);
p=head;
if(head!=null)
{
do
{
printf("学号:%d ",p->num);
printf("姓名:%s ",p->name);
printf("性别:%s ",p->sex);
printf("年龄:%d ",p->age);
printf("家庭住址:%s ",p->add);
p=p->next;
}while(p!=null);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -