Accelerated C++第十章课后习题(下)
来源:互联网 发布:react.js angular.js 编辑:程序博客网 时间:2024/05/21 11:03
10-4 写一个类使之成为可以存储strings的链表。
10-5 为上面的String_list 类写一个双向迭代器。
10-6 为了检验上面的类,重写split函数将结果输入到String_list类中。
这三个题目都是针对一个类进行操作的,所以将这三道题在一个程序中实现。
分析:因为题目要求编写一个string类型的链表,所以程序必须先定义一个结点Node的结构体和一个String_list类。但是由于上学期教我们C的老师比较无语,直接跳过了链表这一章,而我一直是一个主动性不强的人,虽然一直说要自学这部分,看了书,没实际敲过链表的实现,所以这道题目拿到手是很悲催,一直等到看了老师的讲解后才按照老师说的敲了个代码,,好吧,鄙视我把= =
代码:
#include <iostream>#include <string>#include <vector>#include <cctype>using namespace std;struct Node{string data;Node *cur;Node *next;};class String_list{public:String_list(){head=NULL;}void Insert(string str);void Input();private:Node *head;};void String_list::Insert(string str){Node *s;Node *current;s=(Node*)new(Node);s->data=str;if(head==NULL){s->next=NULL;head=s;head->cur =NULL;}else{current=head;while(current->next!=NULL)current=current->next ;current->next=s;s->next=NULL;s->cur=current;}}void String_list::Input(){Node *p,*q;p=head;q=head;int i=0,j=0;cout<<"original sequence:";while(p!=NULL){cout<<p->data<<" ";p=p->next;++i;}cout<<endl<<endl;cout<<"reverse sequence:";while(j!=i-1){q=q->next;++j;}while(q!=NULL){cout<<q->data<<" ";q=q->cur;}}String_list split(const string& s){String_list ret; //有改变typedef string::size_type string_size;string_size i=0;while(i!=s.size()){while(i!=s.size()&&isspace(s[i]))++i;string_size j=i;while(j!=s.size()&&!isspace(s[j]))++j;if(i!=j){ret.Insert(s.substr(i,j-i)); //看清楚这里i=j;}}return ret;}int main(){string s;getline(cin,s);cout<<endl;String_list lis;lis=split(s);lis.Input();return 0;}
运行结果:
0 0
- Accelerated C++第十章课后习题(下)
- Accelerated C++第十章课后习题(上)
- C++Primer 中文版 第五版 第十章课后习题答案
- C Primer Plus 第十章课后习题……2015.5.5
- 《Accelerated C++中文版 通过示例进行编程实践》课后习题解答,第0章
- C++ primer plus 第十章课后习题,原创答案。
- c++primer 第十章习题
- Accelerated C++ 课后习题5-10,回文查找
- c primer plus第十一章课后习题
- c++primer第六章课后习题
- c程序设计语言 课后习题
- accelerated c++ 2章 习题
- c++primer第十章课后编程题
- C++PRIMER第十章课后练习
- 《accelerated c++》---------第六章
- 《C Primer Plus》第二章 C语言概述 课后习题
- 【C Primer Plus】【课后习题】第二章C语言概述
- C和指针课后习题
- John the Ripper password cracker试用
- android ota 升级包制作分析 (1 简介)
- 神之编辑器Emacs & 编辑器之神Vim
- 2014年6月5日 百度马上有钱邀请码 百度邀请码 邀请码
- linux下的消息队列
- Accelerated C++第十章课后习题(下)
- Android 学习资料备忘
- 晨兴刘芹谈创业者这种动物:生来孤独、天道不一定酬勤
- Java 8中慎用method reference
- PCA and Whitening编程代码整理
- Camera服务之--Service
- SecureCRT设置
- QT_PC学习_多媒体入门_Avdio
- LRUCache算法实现