链表建立,插入,删除,输出

2024-09-02 16:48

本文主要是介绍链表建立,插入,删除,输出,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

自己的弱项 = =要好研究一下链表的问题= =

Description

编写一个函数creatlink,用来建立一个动态链表。(包含学号和成绩)
编写一个函数printlink,用来输出一个链表。
编写一个函数dellink,用来删除动态链表中一个指定的结点(由实参指定某一学号,表示要删除该学生结点)。
编写一个函数insertlink,用来向动态链表插入一个结点。
编写一个函数freelink,用来释放一个动态链表。

Input

输入多个学生的学号和成绩,建立动态链表,以0 0 结束
输入学号,删除链表中的对应结点
插入两个链表结点

Output

输出的链表

Sample Input

1001 1001002 951005 901008 760 010051006 981009 99

Sample Output

1001 100.001002 95.001006 98.001008 76.001009 99.00


#include <iostream>
#include <iomanip>
#define NULL 0
using namespace std;
struct student
{int num;float score;student *next;
};
int n;
student *creatlink(void)
{student *head;student *a,*b;n=0;a=b=new student;cin>>a->num>>a->score;head=NULL;while(a->num!=0&&a->score!=0){n=n+1;if(n==1)head=a;elseb->next=a;b=a;a=new student;cin>>a->num>>a->score;}b->next=NULL;return head;
}
student *dellink(student *head,long num)
{student *a,*b;if(head==NULL)return(head);a=head;while(num!=a->num&&a->next!=NULL){b=a;a=a->next;}if(num==a->num){if(a==head)head=a->next;elseb->next=a->next;n=n-1;}return head;
}student *insertlink(student *head,student *stud)
{student *a0,*a,*b;a=head;a0=new student;*a0=*stud;if(head==NULL){head=a0;a0->next=NULL;}else{while((a0->num>a->num)&&(a->next!=NULL)){b=a;a=a->next;}if(a0->num<=a->num){if(head==a)head=a0;elseb->next=a0;a0->next=a;}else{a->next=a0;a0->next=NULL;}}n=n+1;return head;
}
void printlink(student *head)
{student *a;a=head;if(head!=NULL)do{cout<<a->num<<" "<<a->score<<endl;a=a->next;}while(a!=NULL);
}
void freelink(student *head)
{delete head;
}
int main()
{student *creatlink(void);student *dellink(student *,long);student *insertlink(student *,student *);void printlink(student *);void freelink(student *);student *head,stu;long del_num;head=creatlink();cin>>del_num;head=dellink(head,del_num);cin>>stu.num>>stu.score;head=insertlink(head,&stu);cin>>stu.num>>stu.score;head=insertlink(head,&stu);cout<<setiosflags(ios::fixed);cout<<setprecision(2);printlink(head);freelink(head);return 0;
}


这篇关于链表建立,插入,删除,输出的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1130515

相关文章

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

解决mysql插入数据锁等待超时报错:Lock wait timeout exceeded;try restarting transaction

《解决mysql插入数据锁等待超时报错:Lockwaittimeoutexceeded;tryrestartingtransaction》:本文主要介绍解决mysql插入数据锁等待超时报... 目录报错信息解决办法1、数据库中执行如下sql2、再到 INNODB_TRX 事务表中查看总结报错信息Lock

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元

Python对PDF书签进行添加,修改提取和删除操作

《Python对PDF书签进行添加,修改提取和删除操作》PDF书签是PDF文件中的导航工具,通常包含一个标题和一个跳转位置,本教程将详细介绍如何使用Python对PDF文件中的书签进行操作... 目录简介使用工具python 向 PDF 添加书签添加书签添加嵌套书签Python 修改 PDF 书签Pytho

使用Java将实体类转换为JSON并输出到控制台的完整过程

《使用Java将实体类转换为JSON并输出到控制台的完整过程》在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用JSON格式,用Java将实体类转换为J... 在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用j

C#实现查找并删除PDF中的空白页面

《C#实现查找并删除PDF中的空白页面》PDF文件中的空白页并不少见,因为它们有可能是作者有意留下的,也有可能是在处理文档时不小心添加的,下面我们来看看如何使用Spire.PDFfor.NET通过C#... 目录安装 Spire.PDF for .NETC# 查找并删除 PDF 文档中的空白页C# 添加与删

SQL常用操作精华之复制表、跨库查询、删除重复数据

《SQL常用操作精华之复制表、跨库查询、删除重复数据》:本文主要介绍SQL常用操作精华之复制表、跨库查询、删除重复数据,这些SQL操作涵盖了数据库开发中最常用的技术点,包括表操作、数据查询、数据管... 目录SQL常用操作精华总结表结构与数据操作高级查询技巧SQL常用操作精华总结表结构与数据操作复制表结

SpringBoot整合mybatisPlus实现批量插入并获取ID详解

《SpringBoot整合mybatisPlus实现批量插入并获取ID详解》这篇文章主要为大家详细介绍了SpringBoot如何整合mybatisPlus实现批量插入并获取ID,文中的示例代码讲解详细... 目录【1】saveBATch(一万条数据总耗时:2478ms)【2】集合方式foreach(一万条数