程序员面试宝典(C++例题)_new概述.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 链表 3.4 堆栈的实现 说明:请对堆栈这种数据结构做出评论。用C++语言来实现一个堆栈,你可以选用链表或动态数组来实现你的堆栈;并请对你的决定做出解释。你为堆栈设计的程序接口必须完备、规范、和易于使用。 解答:堆栈是一种先入后出、后入先出的数据结构。 class IntStack{ struct Node{ int idata; Node* pnext; }; public: IntStack ():isize(0),phead(NULL){ } ~ IntStack (){ while(phead!=NULL){ Node*p = phead; phead = phead-pnext; delete p; } isize = 0; } void Push(int i){ Node* p = new Node; p-idata = i; p-pnext = phead; phead = p; ++isize; } bool Pop(int iout){ bool ret = false; if(isize0){ iout = phead-idata; Node* p = phead; phead = phead-pnext; delete p; --isize; ret = true; } return ret; } int Size(){ return isize; } private: int isize; Node* phead; }; templateclass Type class Stack{ struct Node{ Type idata; Node* pnext; }; public: Stack():isize(0),phead(NULL){ } ~Stack(){ while(phead!=NULL){ Node*p = phead; phead = phead-pnext; delete p; } isize = 0; } void Push(Type i){ Node* p = new Node; p-idata = i; p-pnext = phead; phead = p; ++isize; } bool Pop(Type tout){ bool ret = false; if(isize0){ tout = phead-idata; Node* p = phead; phead = phead-pnext; delete p; --isize; ret = true; } return ret; } int Size(){ return isize; } private: int isize; Node* phead; }; 3.5 链表的尾指针 说明:有一个单向链表,它的元素全都是些整数。head和tail分别指向该链表第一个元素(即头元素)和最后一个元素(即尾元素)的全局性指针。请实现调用接口如下所示的两个C语言函数: int Delete(element *elem); int InsertAfter(element *elem, int data); Delete函数只有一个输入参数,他就是那个将被删除的元素。InsertAfter函数由两个输入参数,第二个输入参数给出了新元素的取值,它将被插入到第一个输入参数所指定的元素的后面。当需要把新元素插入到链表的开头作为新的头元素时,函数InsertAfter的第一个输入参数(即被声明为element类型的那个输入参数)将被设置为NULL。如果执行成功,这两个函数将返回“1”;如果不成功,将返回“0”。 element *head, *tail; int Delete(element* elem) { int ret = 0; if(elem==NULL) return ret; if(elem==head) { if(head==tail) head=(tail=NULL); else head = head-next; delete elem; ret = 1; return ret; } elemen

您可能关注的文档

文档评论(0)

金不换 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档