C++链表的修改

来源:百度知道 编辑:UC知道 时间:2024/06/30 07:59:30
1.编写一个函数belongTo(),它负责检查一个指定的准考证号是否已经在链表中,如果已经存在,则返回在第几个结点,否则返回0.
2.输入一个新考生的信息,以准考证号为排序规则(从小到大),将新结点插入链表(利用belongTo()进行检查,若输入的准考证号已经存在,给出警告并要求重新输入)。编写函数insert()实现这一功能。
3.输入一个要删除的考生的准考证号,将该准考证号的考生结点从链表中删除(利用belongTo()进行检查,若输入的准考证号不存在,给出警告并要求重新输入)。编写函数delete()实现这一功能。
4.假定已经建立链表,现要求在main()函数中提供操作选择菜单:
0:exit
1:insert
2:delete
3:display
当选择1时,调用insert()将类似下列考生的信息插入链表:
05040005 zhao 281
当选择2时,调用delete()从链表中删除类似下列考生的结点:
05010003 wang 205

在下列程序的基础上修改一下
#include <stdlib.h>
#include <stdio.h>
struct node
{
char num[8];
char name[16];
float score;
struct node *next;
};
void main()
{
struct node *creat(struct node *head,int n);
void print(struct node *head);
struct node *head;
head=NULL;
int n;
printf("请输入需要建立的人数:");
scanf("%d",&n);
printf("请依次输入考号,姓名和成绩:\n");

希望你以后不要再问这种问题,自己能做出来才能有更深的体会。
源代码有些不恰当的地方稍做修改。

#include <stdlib.h>
#include <stdio.h>

#define NUM_LEN 12

struct node
{
char num[NUM_LEN];
char name[16];
float score;
struct node *next;
};

struct node *creat(struct node *head,int n);
void print(struct node *head);
void release(struct node *head);
struct node *insert(struct node *head);
struct node *delete_node(struct node *head);
int belongTo(struct node *newnode, struct node *head);
int compare_num(const char *num1, const char *num2);

void main()
{
struct node *head;
head = NULL;
int n;
printf("输入人数:");
scanf("%d", &n);
printf("输入考号,姓名和成绩:\n");
head = creat(head, n);
/////////////////////////////////////////////
int select;
while(true)
{
printf("\n----------------\n")