南邮 OJ 1014 数据的插入与删除

来源:互联网 发布:一体化指挥平台数据库 编辑:程序博客网 时间:2024/05/18 00:18

数据的插入与删除

时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 1946            测试通过 : 405 

比赛描述

在一组数据(数目不超过10000)中,插入新数,删除所有与给定数相等的数据。



输入

第一行是未排序的一组非负整数,数目不超过10000。以-1作为结束标志。

第二行是要插入的数。

第三行是要删除的数。

输出

第一行输出自小到大排好序的数。如果没有元素,输出“No elements.”(不包括引号)。

第二行输出插入后自小到大排好序的数,以“,”隔开。

第三行输出删除后自小到大排好序的数,以“,”隔开。如果没有元素,输出“No elements.”(不包括引号)。

样例输入

100 98 79 63 44 99 -1
88
79

样例输出

44,63,79,98,99,100
44,63,79,88,98,99,100
44,63,88,98,99,100

提示

 

题目来源

GUOJ


#include<iostream>using namespace std;template<typename Type>class SinglyLinkedNode{Type data;SinglyLinkedNode *next;public:void createLink(void);void printLink(void);void reverseLink(void);void deleteElements(Type del);void addNodeToOrderedLink(Type add);};/**函数说明:输入一个链表,第一行给出元素数目n(0<n≤1000),第二行给出元素数值*入口参数:无*出口参数:无*作者:陈汝军*日期:2014-8-17 21:42:44*/template<typename Type>void SinglyLinkedNode<Type>::createLink(void){int n;//元素数目cin>>n;SinglyLinkedNode *p,*q;p = this;while(n--){q = new SinglyLinkedNode();cin>>q->data;p->next = q;p = q;}}/**函数说明:打印一个链表*入口参数:无*出口参数:无*作者:陈汝军*日期:2014-8-17 21:42:51*/template<typename Type>void SinglyLinkedNode<Type>::printLink(void){SinglyLinkedNode *p = this->next;if(p==NULL){cout<<"No elements.";}while(p!=NULL){cout<<p->data;p = p->next;if(p!=NULL)cout<<",";}cout<<endl;}/**函数说明:翻转一个链表*入口参数:无*出口参数:无*作者:陈汝军*日期:2014-8-17 21:42:28*/template<typename Type>void SinglyLinkedNode<Type>::reverseLink(void){SinglyLinkedNode *p,*q;p = this->next;//p指向原来链表第一个元素,也是翻转后的最后一个元素的下一个元素if(p == NULL) return;q = p->next;//q指向将要移动的元素while(q!=NULL){p->next = q->next;q->next = this->next;this->next = q;q = p->next;}}/**函数说明:删除一个链表与给出的值相等的节点*入口参数:Type del:将要删除的值*出口参数:无*作者:陈汝军*日期:2014-8-17 21:43:38*/template<typename Type>void SinglyLinkedNode<Type>::deleteElements(Type del){SinglyLinkedNode *p,*q;p = this;q = p->next;while(q!=NULL){if(q->data == del){p->next = q->next;delete q;q = p->next;}else{p = p->next;q = p->next;}}}/**函数说明:添加一个元素到已经排好序的一个链表,由小到大排序*入口参数:Type add:将要添加的元素值*出口参数:无*作者:陈汝军*日期:2014-8-17 21:44:23*/template<typename Type>void SinglyLinkedNode<Type>::addNodeToOrderedLink(Type add){SinglyLinkedNode *p,*q;q = new SinglyLinkedNode();q->data = add;p = this;while(p->next!=NULL && p->next->data<add){p = p->next;}q->next = p->next;p->next = q;}int main(void){int temp;SinglyLinkedNode<int> *head = new SinglyLinkedNode<int>();while(cin>>temp && temp!=-1){head->addNodeToOrderedLink(temp);}head->printLink();cin>>temp;head->addNodeToOrderedLink(temp);head->printLink();cin>>temp;head->deleteElements(temp);head->printLink();return 0;}




0 0
原创粉丝点击