c语言使用链表编写一个可以实现班级学生管理系统,增加,删除,修改学生信息
2013-10-23 11:55
1631 查看
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct tagPerson
{
char name[20];
char sex[20];
long tel[20];
struct tagPerson *next;
}Person;
Person * create(int n)
{
Person *head=NULL,*pre=
NULL;
for(int i=0;i<n;i++ )
{
Person *temp=malloc(sizeof(Person));
printf("输入姓名:");
scanf("%s",temp->name);
printf("输入性别:");
scanf("%s",temp->sex);
printf("输入电话:");
scanf("%ld",temp->tel);
if (head==NULL)
{
head=temp;
}
if (pre!=NULL)
{
pre->next=temp;
}
pre=temp;
}
pre->next=NULL;
return head;
}
void show(Person * head)
{
Person *p=head;
while (p)
{
printf("\n%s\t%s\t%ld\n",p->name,p->sex,p->tel);
p=p->next;
}
}
void destroy(Person *head)
{
Person *a=head,*b;
while (a)
{
b=a->next;
free(a);
a=b;
}
}
Person *delete(Person *head ,long *tel)
{
Person *p=head;
Person *before=NULL,*me=NULL,*t=NULL;
while (p)
{
if (strcmp(p->tel, tel)==0)
{
before=t;
me=p;
break;
}t=p;
p=p->next;
}
if (p)
{
if (before==NULL&&me!=NULL)
{
head=me->next;
free(me);
}
else if(before!=NULL&&me->next!=NULL)
{
before->next=me->next;
free(me);
}
else if(before!=NULL&&me->next==NULL)
{
before->next=NULL;
free(me);
}
}return head;
}
int main(int argc,
const char * argv[])
{
int n;
printf("请输入人数");
scanf("%d",&n);
Person *head=create(n);
show(head);
printf("修改后的数据:");
printf("删除后的数据:");
delete(head,
"1234");
show(head);
destroy(head);
return 0;
}
#include <stdlib.h>
#include <string.h>
typedef struct tagPerson
{
char name[20];
char sex[20];
long tel[20];
struct tagPerson *next;
}Person;
Person * create(int n)
{
Person *head=NULL,*pre=
NULL;
for(int i=0;i<n;i++ )
{
Person *temp=malloc(sizeof(Person));
printf("输入姓名:");
scanf("%s",temp->name);
printf("输入性别:");
scanf("%s",temp->sex);
printf("输入电话:");
scanf("%ld",temp->tel);
if (head==NULL)
{
head=temp;
}
if (pre!=NULL)
{
pre->next=temp;
}
pre=temp;
}
pre->next=NULL;
return head;
}
void show(Person * head)
{
Person *p=head;
while (p)
{
printf("\n%s\t%s\t%ld\n",p->name,p->sex,p->tel);
p=p->next;
}
}
void destroy(Person *head)
{
Person *a=head,*b;
while (a)
{
b=a->next;
free(a);
a=b;
}
}
Person *delete(Person *head ,long *tel)
{
Person *p=head;
Person *before=NULL,*me=NULL,*t=NULL;
while (p)
{
if (strcmp(p->tel, tel)==0)
{
before=t;
me=p;
break;
}t=p;
p=p->next;
}
if (p)
{
if (before==NULL&&me!=NULL)
{
head=me->next;
free(me);
}
else if(before!=NULL&&me->next!=NULL)
{
before->next=me->next;
free(me);
}
else if(before!=NULL&&me->next==NULL)
{
before->next=NULL;
free(me);
}
}return head;
}
int main(int argc,
const char * argv[])
{
int n;
printf("请输入人数");
scanf("%d",&n);
Person *head=create(n);
show(head);
printf("修改后的数据:");
printf("删除后的数据:");
delete(head,
"1234");
show(head);
destroy(head);
return 0;
}
相关文章推荐
- C语言实现一个Window控制台带彩色,且可以用方向键选择并确认的菜单式列表(二) ---学生信息管理系统
- C语言使用链表实现学生信息管理系统
- <C语言>使用一个二维数组实现学生姓名管理系统,要求不能使用链表
- 学生信息管理系统V0.3(优化文件存取、增加修改删除功能)
- 完成一个学生管理程序,使用学号作为键添加5个学生对象,并可以将全部信息保存在文件中,可以实现对学生信息的学号查找,输出全部学生信息的功能。
- c语言实现的货物管理系统实例代码(增加删除 查找货物信息等功能)
- 就C语言的指针、链表的原理和各类操作撰写一篇技术博客,说说自己学习C语言指针和链表的体会,并将学生信息管理系统进行修改,使能完成其他的功能,并撰写体会,附加源代码。
- 完成一个学生管理程序,使用学号作为键添加5个学生对象,并可以将全部信息保存在文件中,可以实现对学生信息的学号查找,输出全部学生信息的功能。
- C++链表类的三种使用方法(学生信息管理系统的实现)
- 完成一个学生管理程序,使用学号作为键添加5个学生对象,并可以将全部信息保存在文件中,可以实现对学生信息的学号查找,输出全部学生信息的功能。
- 使用python实现一个简单的学生信息管理系统
- 完成一个学生管理程序,使用学号作为键添加5个学生对象,并可以将全部信息保存在文件中,可以实现对学生信息的学号查找,输出全部学生信息的功能。
- 使用单向链表实现学生信息管理系统
- 使用python实现一个简单的学生信息管理系统
- 完成一个学生管理程序,使用学号作为键添加5个学生对象,并可以将全部信息保存在文件中,可以实现对学生信息的学号查找,输出全部学生信息的功能。
- 创建一个学生系统,实现一下功能; * 1:增加学生 * 2:显示学生 * 3:修改学生 * 4:删除学生 * 5:查找学生 * 6:退出程序 * 请输入选择(
- 完成一个学生管理程序,使用学号作为键添加5个学生对象,并可以将全部信息保存在文件中,可以实现对学生信息的学号查找,输出全部学生信息的功能。
- 完成一个学生管理程序,使用学号作为键添加5个学生对象,并可以将全部信息保存在文件中,可以实现对学生信息的学号查找,输出全部学生信息的功能。
- C语言实现一个列表式的学生信息管理系统(完善)
- 完成一个学生管理程序,使用学号作为键添加5个学生对象,并可以将全部信息保存在文件中,可以实现对学生信息的学号查找,输出全部学生信息的功能。