全在代码里面 case …的用法
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//循环链表 的增删改查
typedef struct dat //学生
{
char name[10]; //名字
int num,sex,age; //分数,0女1男,年龄
char tel[12];
}s,*S;
typedef struct Node
{
s data; //数据域
S next; //指针域
}n,*N;
//链表初始化
N list_init()
{
N p=malloc(sizeof(n));
if(p == NULL)
{
printf("申请内存失败!\n");
return NULL;
}
p->next=p; //指向本身
return p;
}
//遍历列表
void list_all(N head)
{
N p=head;
char sex_flag[3];
while(p->next !=head) //找到尾部的节点
{
printf("--------------------\n");
char* cc= (p->data.sex)==1?"男":"女"; //三目运算 性别的标志
strcpy(sex_flag,cc);
printf("姓名:%s\n性别:%s\n学号:%d\n年龄:%d\n电话:%s\n",\
p->data.name,sex_flag,p->data.num,p->data.age,p->data.tel);
printf("\n------------------\n\n");
p=p->next; //偏移
}
}
//头插法
int list_insert_head(N head)
{
s a;
printf("姓名:");
scanf("%s",a.name);
printf("班级:");
scanf("%d",&a.num);
printf("性别:");
scanf("%d",&a.sex);
printf("年龄:");
scanf("%d",&a.age);
printf("电话:");
scanf("%s",a.tel);
N p=malloc(sizeof(n));
if(p == NULL)
{
printf("申请内存失败!\n");
return 0; //插入失败
}
*p=*head; //虚头后移
head->data=a;
head->next=p;
return 1;
}
//查找
N list_find(N head)
{
char a[10];
printf("请输入要查找的对象姓名:");
scanf("%s",a);
N p=head;
while(p->next != head)
{
if(strcmp(p->data.name,a)== 0)
{
return p;
}
p=p->next;
}
printf("没找到!\n");
return NULL;
}
//删除
int list_delete(N head)
{
s a[10];
printf("请输入要删除的对象姓名:");
scanf("%s",a);
N p=head;
while(p->next!=head)
{
if(!strcmp(p->data.name,a)) //找出有这个
{
N flag_p=head;
while(flag_p->next !=p) flag_p=flag_p->next;//找到指向要删除的对象
flag_p->next=p->next; //删除
free(p);
return 1;
}
p=p->next;
}
return 0;
}
//修改
int list_change(N head)
{
s a[10];
int n;
printf("请输入要修改的对象姓名:");
scanf("%s",a);
N p=head;
while(p->next !=head)
{
if(!strcmp(p->data.name,a)) //找出有这个
{
printf("输入1.修改姓名\n2.修改班级\n3.修改性别\n4.修改年龄\n5.修改电话\n");
scanf("%d",&n);
switch(n)
{
case 1:scanf("%s",p->data.name);break;
case 2:scanf("%d",p->data.num);break;
case 3:scanf("%d",p->data.sex);break;
case 4:scanf("%d",p->data.age);break;
case 5:scanf("%s",p->data.tel);break;
default:break;
}
return 1;
}
p=p->next;
}
printf("未找到对象!\n");
return 0;
}
void main()
{
system("clear");
N head=list_init();
int n;
while(1)
{
printf("1.查看\n2.添加\n3.修改\n4.删除\n");
scanf("%d",&n);
switch(n)
{
case 1:list_all(head);break;
case 2:list_insert_head(head);break;
case 3:list_change(head);break;
case 4:list_delete(head);break;
case 5 ... 10 :system("clear");break; //输入5到10清屏操作
default:break;
}
}
}
效果如下: