C语言习题 链表建立,插入,删除,输出
Problem B: C语言习题 链表建立,插入,删除,输出
Time Limit: 1 Sec Memory Limit:
128 MB
Submit: 222 Solved: 92
[Submit][Status][Web
Board]
Description
编写一个函数creatlink,用来建立一个动态链表。(包含学号和成绩)
编写一个函数printlink,用来输出一个链表。
编写一个函数dellink,用来删除动态链表中一个指定的结点(由实参指定某一学号,表示要删除该学生结点)。
编写一个函数insertlink,用来向动态链表插入一个结点。
编写一个函数freelink,用来释放一个动态链表。
Input
输入多个学生的学号和成绩,建立动态链表,以0 0 结束
输入学号,删除链表中的对应结点
插入两个链表结点
Output
输出的链表
#include<iostream>
#include<iomanip>
using namespace std;
struct student
{int num;
double score;
student *p;
}; student *creatlink(void)
{
student *head,*p,*s;
head=new student;
s=p=head;
while(1)
{cin>>(*p).num>>(*p).score;
if((*p).num==0&&(*p).score==0)
{delete p;(*s).p=NULL; return head;}
(*p).p=new student;
s=p;
p=p->p;
(*p).p=NULL;
} }
student *dellink(student *head,long a)
{student *p,*h;
h=p=head;
if((*p).num==a)
{head=(*p).p;
delete p; //////////////////////////
return head;}
while(1)
{
if((*p).num==a)
{h->p=p->p;delete p;return head;}
h=p;
p=(*p).p;
}
return head;}
student *insertlink(student *head,student *a)
{student *p,*h,*s;
s=h=head;
p=new student ;
p->num=a->num;
p->score=a->score;
p->p=NULL;
if(p->num<head->num)
{head=p;
p->p=h;return head;}
while(1)
{if(h->num>p->num)
{
p->p=h;
s->p=p;return head;}
s=h;
h=h->p;
if(h==NULL)
{s->p=p;p->p=NULL;return head;}
}
}
void printlink(student *head)
{
while(head!=NULL)
{
cout<<head->num<<' '; cout<<setiosflags(ios::fixed)<<setprecision(2)<<head->score<<endl;;
head=head->p; }
} void freelink(student *head)
{
student *p;
while(head!=NULL)
{
p=head->p;
delete head;
head=p; } }
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; }
C语言习题 链表建立,插入,删除,输出的更多相关文章
- YTU 2430: C语言习题 链表建立,插入,删除,输出
2430: C语言习题 链表建立,插入,删除,输出 时间限制: 1 Sec 内存限制: 128 MB 提交: 576 解决: 280 题目描述 编写一个函数creatlink,用来建立一个动态链表 ...
- Problem A: C语言习题 链表建立,插入,删除,输出
#include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct student { l ...
- Problem X: C语言习题 学生成绩输入和输出
Problem X: C语言习题 学生成绩输入和输出 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 4722 Solved: 2284[Submit] ...
- YTU 2429: C语言习题 学生成绩输入和输出
2429: C语言习题 学生成绩输入和输出 时间限制: 1 Sec 内存限制: 128 MB 提交: 1897 解决: 812 题目描述 编写一个函数print,打印一个学生的成绩数组,该数组中有 ...
- 20140502 static_cast和dynamic_cast的类型检查 双链表建立,删除,打印
1.static_cast和dynamic_cast的类型检查 static_cast的类型检查:只检查无关类之间的转换 CBaseY* pY1 = static_cast<CBaseY*> ...
- 链表的C++实现——创建-插入-删除-输出-清空
注:学习了数据结构与算法分析后,对链表进行了C++实现,参考博文:http://www.cnblogs.com/tao560532/articles/2199280.html 环境:VS2013 // ...
- 单链表的插入删除操作(c++实现)
下列代码实现的是单链表的按序插入.链表元素的删除.链表的输出 // mylink.h 代码 #ifndef MYLINK_H #define MYLINK_H #include<iostream ...
- [PHP] 数据结构-链表创建-插入-删除-查找的PHP实现
链表获取元素1.声明结点p指向链表第一个结点,j初始化1开始2.j<i,p指向下一结点,因为此时p是指向的p的next,因此不需要等于3.如果到末尾了,p还为null,就是没有查找到 插入元素1 ...
- 「C语言」单链表/双向链表的建立/遍历/插入/删除
最近临近期末的C语言课程设计比平时练习作业一下难了不止一个档次,第一次接触到了C语言的框架开发,了解了View(界面层).Service(业务逻辑层).Persistence(持久化层)的分离和耦合, ...
随机推荐
- 管理处理器的亲和性(affinity)
管理处理器的亲和性(affinity) 管理处理器的亲和性(affinity)
- myeclipse 那个版本号好用?
myeclipse 那个版本号好用? 有没有现成的下载地址?
- OC -- 第一个类
OC -- 第一个类 类名:Car 属性:轮胎个数.时速 行为:跑 完整写一个类:类的声明和实现 1. 类的声明 代码: // NSObject 再Foundation框架中 #import & ...
- JQuery插件datatables相关api
学习可参考:http://www.guoxk.com/node/jquery-datatables http://yuemeiqing2008-163-com.iteye.com/blog/20069 ...
- This application failed to start because it could not find or load the Qt platform plugin "xcb".
linux根据系统Qt5未安装编译的程序Qt在该系统下进行下面的错误会报: This application failed to start because it could not find or ...
- Linux SSH端口转发
SSH端口转发分为两种,一种是本地端口转发,又称为本地SSH隧道.一直是远程端口转发.SSH端口转发,还必须指定数据传送的目标主机,从而形成点对点的端口转发. 本地端口转发 假定有三台主机A. ...
- 京东商城招聘匹配系统资深工程师 T4级别
岗位级别:T4 岗位职责: 1.负责匹配系统的架构设计 2.负责网页抽取.实体识别.匹配等算法设计 3.核心代码编写,代码review 任职要求: 1.熟悉机器学习.自然语言处理理论和算法2.三年以上 ...
- openstack学习笔记一 虚拟机启动过程代码跟踪
openstack学习笔记一 虚拟机启动过程代码跟踪 本文主要通过对虚拟机创建过程的代码跟踪.观察虚拟机启动任务状态的变化,来透彻理解openstack各组件之间的作用过程. 当从horizon界面发 ...
- java中的特殊字符集合
JAVA中转义字符: 1.八进制转义序列:\ + 1到3位5数字:范围'\000'~'\377' \0:空字符 2.Unicode转义字符:\u + 四个 十六进制数字:0~65535 ...
- VS调试技巧之附加进程
用过VS一段时间的程序猿们相信都有过这种调试经历:每次按下F5进行断点调试时,都要等待好长时间:先让解决方式编译通过,然后启动VS自带的简版IIS作为server启动,进而开启浏览器,最后进行对应的操 ...