可见成功完成了所需的功能 , 望采纳~
建立一个动态链表 , 链表中每一结点包括:学号、姓名、性别、年龄、成绩 。( 很急的谁帮帮我??)2、#includestdio.h
#includestdlib.h
#includeconio.h
/*定义结构体*/
struct student
{
int num;
float score;
struct student *next;
};
/*创建一个只有头结点的空链表*/
struct student *create_head()
{
struct student *head;
head=(struct student*)malloc(sizeof (struct student) );
if(head==NULL) //小心别漏这个
{
printf("申请头结点失败!\n");
return NULL;
}
head-next=NULL;
return head;
}
/*将s指向的结点插入链表,使链表保持升序,并返回头结点*/
struct student *insert(struct student *head,struct student *s)
{
struct student *p=head;
while(p-next!=NULLs-scorep-next-score)//特别注意左右不能写反,若s最大,最后p-next=NULL,p-next-score运行出错
p=p-next;
if(p-next==NULL) //s-score最大的情况 //其实两种情况可以并在一块写
{
p-next=s; //连接结点
s-next=NULL; //p-next就等于NULL
}
else
{
p-next=s; //连接结点
s-next=p-next;
}
return head ;
}
/*查找符合条件的结点,并返回指向该结点的指针*/
struct student *search(struct student *head)
{
struct student *p=head-next;
int num;
printf("请输入要查找学生的学号:\n");
scanf("%d",num);
while(p!=NULLp-num!=num) //特别注意两条件不能写反,若写反最后p指向NULL时p-num找不到 运行出错
p=p-next;
if(p==NULL) //特别注意两个if不能调换,若调换最后p指向NULL时p-num运行出错
{
printf("找不到符合条件的结点!!!");
return NULL; //查找不到返回空指针
}
if(p-num==num)
{
printf("找到符合条件的结点\n该结点为%d\t%f",p-num,p-score);
return p; //返回查找到的指针
}
}
/*输出链表各结点的值,也称对链表的遍历*/
void print(struct student *head)
{
struct student *p;
printf(" 链表如下: \n");
p=head-next;
while(p!=NULL)
【go语言链表如果学号存在 golang链表介绍】{
printf("%d\t%.1f\n",p-num,p-score);
p=p-next;
}
}
/*释放链表*/
void free_list(struct student *head)
{
struct student *p=head ;
printf("释放链表:\n");
while(p!=NULL)
{
head=head-next;
free(p);
p=head;
}
printf("释放链表成功!\n");
}
/*删除链表中值为num的结点,并返回链表的首指针*/
struct student *delete_note(struct student *head,int num_x)
{
struct student *p1=head-next , *p2=head ;
while(p1!=NULLp1-num!=num_x) //特别注意左右条件不能调换,若调换如果p1指向NULL时p1-num运行出错
{
p2=p1;
p1=p1-next;
}
if(p1==NULL) //特别注意两个if不能调换,若调换如果p1指向NULL时,p1-num运行出错
printf("找不到符合删除要求的结点!!!\n");
if(p1-num==num_x)
{
p2-next=p1-next;
free(p1);
printf("结点删除成功!\n");
}
return head;
}
/*完整的有头结点链表操作程序*/
void main()
{
struct student *p , *head ;
char c;
int num ;
float score ;
printf("有头结点链表操作程序:\n");
head=create_head();
while(1)
{
printf("I:插入结点(自动升序) P:输出链表 S:查找结点 D:删除结点 E:释放链表并退出程序! ");
c=getch();
switch(c)
{
case'I':
printf("请分别输入要插入学生的学号和分数:\n");
- 将数据保存到文件中c语言 将数据保存到mongodb
- 罗布人村天气 mysql语言具有的功能
- redis编程语言 redis对应c语言
- redis一般和什么语言一起开发 和redis类似的编程
- mongodb采用什么语言 mongodb的设计采用什么
- c连接mysql数据库 c连接mysql报错
- mongodb底层数据结构 mongodb底层语言
- mysql删除表如果存在 在mysql删除表正确的
- mongodb用什么语言写的 mongodb开源吗
- mongodb是做什么的 mongodb是什么语言写的
