c语言构建新生的学籍卡管理程序,【C语言】构建新生的学籍卡管理程序。学籍卡内容包括:学号、姓名、性别、专业等内容。...

题目(数据结构测试)

7ccf799453c2d6644a6437835a652dd1.png

代码:

#include

#include

#include

#define MAX 50

/*创建一个学生表结构体*/

typedef struct student_node

{

unsigned id;

char name[MAX];

char sex[MAX];

char major[MAX];

struct student_node *next;

}Slink;

/*创建一个有n个学生带头结点的单链表*/

Slink *CreateSlink(int n)

{

Slink *head,*p,*s;

int i;

p = head = (Slink *)malloc(sizeof(Slink)); //创建头结点

printf("请输入%d个学生的学籍信息:\n",n);

for(i = 0;i < n;i++)

{

s = (Slink *)malloc(sizeof(Slink));

printf("**********请输入学号**********\n");

scanf("%u",&s->id);

printf("**********请输入姓名**********\n");

getchar(); //消除scanf函数不接收的 回车符(\n)

gets(s->name); //name中可以包含空格

printf("**********请输入性别**********\n");

scanf("%s",&s->sex);

printf("**********请输入专业**********\n");

scanf("%s",&s->major);

p->next = s; //将新结点s插入链表的尾结点

p = s; //修改尾指针指向 p 指向当前的尾结点 s

}

p->next = NULL;

return head;

}

/*在单链表中按照学号顺序重新调整结点的顺序,形成一个新的链表*/

void BubbleSort(Slink *head)

{

Slink *firstNode = head->next;

Slink *secondNode = head;

char temp[1024];

while(firstNode != NULL)

{

while(firstNode->next != NULL)

{

if(firstNode->id > firstNode->next->id)

{

int t = firstNode->id;

firstNode->id = firstNode->next->id;

firstNode->next->id = t;

//交换姓名

strcpy(temp,firstNode->name);

strcpy(firstNode->name,firstNode->next->name);

strcpy(firstNode->next->name,temp);

//交换性别

strcpy(temp,firstNode->sex);

strcpy(firstNode->sex,firstNode->next->sex);

strcpy(firstNode->next->sex,temp);

//交换专业

strcpy(temp,firstNode->major);

strcpy(firstNode->major,firstNode->next->major);

strcpy(firstNode->next->major,temp);

}

firstNode = firstNode->next;

}

firstNode = secondNode->next;

secondNode = firstNode;

}

}

/*输出按学号从小到大排序后的结果*/

void display(Slink *head)

{

Slink *p;

p = head->next; /*从第一个实际结点开始*/

if(!p)

{

printf("\n带头结点的单链表是空的!");

}

else

{

printf("\n新生登记卡按学号排序后的表为:\n");

while(p)

{

printf("%u %s %s %s\n",p->id,p->name,p->sex,p->major);

p = p->next;

}

}

}

int main()

{

Slink *head = CreateSlink(3);

BubbleSort(head);

display(head);

}

运行结果

4767905262942b85953fac414fb40bf6.png

标签:head,管理程序,Slink,next,strcpy,firstNode,id,C语言,学籍

来源: https://www.cnblogs.com/HGNET/p/13875005.html

  • 8
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值