当前位置: 首页 > news >正文

本地做网站顺序凡科网怎么制作小程序

本地做网站顺序,凡科网怎么制作小程序,网络服务机构的域名是什么,android直播app开发手写一个简单版本的list 设计一个名为 List 的 List 类#xff0c;该类具有以下功能和特性#xff1a; 1、基础成员函数 构造函数#xff1a;初始化 List 实例析构函数#xff1a;清理资源#xff0c;确保无内存泄露 2、核心功能 在 List 末尾添加元素在 List 开头添…手写一个简单版本的list 设计一个名为 List 的 List 类该类具有以下功能和特性 1、基础成员函数 构造函数初始化 List 实例析构函数清理资源确保无内存泄露 2、核心功能 在 List 末尾添加元素在 List 开头添加元素获取 List 中节点的数量删除 List 末尾的元素删除 List 开头的元素删除 List 中指定值的节点 3、迭代与遍历 打印链表中的元素 4、辅助功能 重载[]运算符以对链表进行索引访问重载运算符以打印链表 输入描述 题目的包含多行输入第一行为正整数 N, 代表后续有 N 行命令序列。 接下来 N 行每行包含一个命令命令格式为 [operation] [parameters] 具体命令如下 push_back 命令 格式push_back [value]功能在链表末尾添加值为 value 的元素 push_front 命令 格式push_front [value]功能在链表开头添加值为 value 的元素 pop_back 命令 格式pop_back功能删除链表末尾的元素 pop_front 命令 格式pop_front功能删除链表开头的元素 remove 命令 格式remove [value]功能删除链表中值为 value 的元素 clear 命令 格式clear功能清空链表 size 命令 格式size功能获取链表中节点的数量 get 命令 格式get [index]功能获取链表中索引为 index 的节点的值 print 命令 格式print功能打印链表中的元素 输出描述 输出为每行命令执行后的结果具体输出格式如下 **push_back 命令**无输出 **push_front 命令**无输出 **pop_back 命令**无输出 **pop_front 命令**无输出 **remove 命令**无输出 **clear 命令**无输出 **size 命令**输出一个整数独占一行代表当前 List 中元素的数量 **get 命令**输出一个整数独占一行代表 List 中索引为 index 的元素如果索引无效则输出 -1 **print 命令**按照顺序打印当前 List 包含的所有元素每个元素后都跟一个空格打印结果独占一行如果当前的 vector 为空则打印 empty #include iostream #include stdexcept #include iostream #include algorithm #include sstream #include string using namespace std; template typename T class List { public:templatetypename Lfriend ostream operator(ostream os, const ListL pt); private://定义链表结点struct Node{T data;Node* next;Node* prev;//含参的默认构造函数Node(const Tvalue, Node* nextNode nullptr,Node* prevNode nullptr){data value;next nextNode;prev prevNode;}};//头尾结点指针Node* head;Node* tail;//结点数量size_t size;public:List(){head NULL;tail NULL;size 0;}~List(){clear();//把链表空间释放}//前插void push_front(const T value){//创造新节点next指向的是headNode* newNode new Node(value, head, NULL);if (head ! NULL)//如果链表非空{head-prev newNode;}else{//如果链表是空的则首尾都要指向这个独苗tail newNode;}head newNode;//头结点前移size;}//尾插void push_back(const T value){Node* newNode new Node(value, NULL, tail);if (tail ! NULL)tail-next newNode;elsehead newNode;tail newNode;//尾结点后移size;//链表长度加1}size_t getSize() const{return size;}//访问:循环index次然后返回当前结点的值即可T operator[](size_t index){Node* cur head;//head相当于是下标为0的元素while (index--){if (cur NULL)throw out_of_range(index out of range);cur cur-next;}return cur-data;}const T operator[](size_t index) const{Node* cur head;//head相当于是下标为0的元素while (index--){if (cur NULL)throw out_of_range(index out of range);cur cur-next;}return cur-data;}//删除链表末尾元素// 首先直接获取尾结点的前一个结点// 然后尾结点prev指向null,然后尾结点前移// 最后将新尾结点的next指向nullsize--//void pop_back()//{// if (tail NULL)// cout empty endl;// else// {// Node* tailPre tail-prev;//tailPre可能为空// tail-prev NULL;// tail tailPre;// if (tail)// tail-next NULL;// else// head NULL;// size--;// } //}//标准(此方法更好释放了tail的内存没有造成内存遗失)void pop_back(){if (size 0){Node* newTail tail-prev;//直接把尾结点删了简单粗暴。//结点delete之后它的prev和next指针都自动消失了delete tail;//虽然空间没了但是Node*tail这个指针本身还在健在的tailnewTail;if (tail)tail-next NULL;elsehead NULL;size--;}}void pop_front(){if (size 0){Node* newHead head-next;delete head;head newHead;if (head)head-prev NULL;elsetail NULL;size--;}}Node* getNode(const T val){//遍历,用whileNode* node head;while (node!NULL){if (node-val val)return node;node node-next;}return NULL;}//删除结点void remove(const T val){Node* node head;while (node ! NULL){if (node-data val){if (node head node tail){node NULL;}else if (node head){head head-next;head-prev NULL;}else if (node tail){tail tail-prev;tail-next NULL;}else{node-prev-next node-next;node-next-prev node-prev;}size--;}node node-next;}}bool empty(){return size 0;}void clear(){//每次都设置一个指针指向要被删除的元素while (head!NULL){Node* node head;//从头开始head head-next;//头不断后移delete node;}tail NULL;size 0;}Node* begin(){return head;}Node* end(){return NULL;}void printElements() const{Node* node head;while (node ! NULL){cout node-data ;node node-next;}cout endl;}};//重载运算符 templatetypename T ostream operator(ostream os, const ListT pt) {for (typename ListT::Node* cur pt.head; cur ! NULL; cur cur-next){os cur-data ;}os endl;return os; }int main() {// 创建一个 List 对象Listint myList;int N;std::cin N;// 读走回车getchar();std::string line;// 接收命令for (int i 0; i N; i) {std::getline(std::cin, line);std::istringstream iss(line);std::string command;iss command;int value;if (command push_back) {iss value;myList.push_back(value);}if (command push_front) {iss value;myList.push_front(value);}if (command pop_back) {myList.pop_back();}if (command pop_front) {myList.pop_front();}if (command remove) {iss value;myList.remove(value);}if (command clear) {myList.clear();}if (command size) {std::cout myList.getSize() std::endl;}if (command get) {iss value;std::cout myList[value] std::endl;}if (command print) {if (myList.getSize() 0) {std::cout empty std::endl;}else {myList.printElements();}}}return 0; }
http://www.hkea.cn/news/14351771/

相关文章:

  • 网站 用什么语言宁德北京网站建设
  • 彩票网站制作找谁响应式网站建设源码
  • 网站建设的公司选择哪家好进入公众号后打开网页
  • 做网站的升级人wordpress 外贸网站
  • 建设一个网站的文案需要做中英双语切换的网站
  • 深圳网站设计公司如何个人创业做网站
  • 做手机网站价格广州门户网站制作
  • 网站开发的软 硬件环境标准网站页脚需要放什么用
  • 网站建设1000元响应式网站 翻译
  • 东莞做网站设计制作安徽中小企业网站建设
  • 网站的详情页面散文网站模板
  • 如何进行网站宣传推广哪里有做微商网站
  • 河南网站建设app开发网站建设mdf
  • 上传网站的三种方法做wish选品参考什么网站
  • 软件下载网站地址网站接口设置
  • 全球域名注册平台seo整合营销
  • 中国黄金集团建设有限公司官方网站wordpress点播收费
  • 闽侯县住房和城乡建设局网站中小型网站建设 教案
  • 做视频网站怎么看不会卡织梦做中英文网站详细步骤
  • 网站建设业务怎么做产品线上营销有哪些方式
  • 网站建设的风险预测中小企业建站可以怎么做
  • 公司门户网站怎么做信丰做网站
  • 漳州建设银行网站合肥集团网站建设公司
  • 嘉兴企业自助建站福田补贴每人9000元
  • 沧州工商联网站建设南阳做网站哪个好
  • 新桥做网站公司策划网络营销活动
  • 做电影网站心得建立一个网站需要哪些步骤
  • 企业做网站怎么做个人网页上传网站怎么做
  • 响应式商业网站开发实训报告国内室内设计网站大全
  • 导航类网站怎么做排名文字图片在线制作生成器