第七章 动态内存分配和常用算法.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章 动态内存分配和常用算法

动态内存分配和常用算法 堆内存分配 堆内存的分配与释放 堆内存的分配与释放 堆内存的分配与释放 堆内存的分配与释放 堆内存的分配与释放 堆内存的分配与释放 堆内存的分配与释放 堆内存的分配与释放 堆对象与构造函数 堆对象与构造函数 堆对象与构造函数 浅拷贝与深拷贝 浅拷贝与深拷贝 浅拷贝与深拷贝 浅拷贝与深拷贝 浅拷贝与深拷贝 链表与链表的基本操作 单链表基本算法 单链表基本算法 单链表基本算法 建立链表:下面以建立学生情况的单向链表为例进行说明,假设从键盘输入时,如果学号为0表示,链表建立结束。 1、先设置三个指向student的结构变量指针: struct student *head, *p1, *p2; 2、使用 new 函数动态申请一个结点的空间,并使p1和p2 都指 向新结点 p1 = p2 = new struct student; 3、有了第一结点后,从键盘上输入数据给新结点成员 cin p1-num p1-score; 然后将p1赋给head,让head也指向第一个结点 4、接着再申请第二个结点,并使p1指向新结点,从键盘输入数 据,用下述方法将新结点链入链表,即第一个结点p2中的next 指向新结点 p2-next = p1; 然后让p2指向p1,即p2=p1 5、然后再申请第三个……..重复4的步骤,直到最后输入的学号 为0为止 6、最后将p2-next = NULL 单链表基本算法 单链表基本算法 单链表基本算法 单链表基本算法 单链表基本算法 单链表基本算法 单链表基本算法 单链表基本算法 Struct student * combineList(heada, headb) Struct student *heada, *headb; { Struct student *p; p = heada; if(p != NULL) { while(p-next != NULL) p = p-next; p-next = headb; } else heada = headb; return heada; } 栈与应用 栈与应用 栈的操作有两种:push(压入或进栈)和pop(弹出或出栈)。在栈刚开始建立时,栈顶指针sp是指向栈底,如下图a,如果向栈内push一个数据8,则系统把8写入sp所指向的内存,然后sp++,如下图b所示。如再压入数据5,则系统把5写入sp所指向的内存,然后sp++,如下图c所示,总之,栈顶sp所指向的内存是存放最新需要压入的数据。由栈内弹出数据时,先执行sp=sp-1,然后返回sp所指向的数据,就是5,如下图d所示,如果现在还有一个数据20需要压入的,那么就将5数据覆盖,结果如下图e,因为数据5已经被弹出,所以覆盖是没有问题的。 栈与应用 栈类的数据定义: #define STACKSIZE 10 class Stack { private: long buffer[STACKSIZE]; long *sp; public: Stack() { sp = buffer; } ~Stack() { }; void push(long data) { if(sp = buffer+STACKSIZE) cerr “Stack overflow !” endl; else { *sp ++ = data; cout data “ is pushed !” endl; } } 栈与应用 long pop() { if(sp = buffer) { cerr “Stack is Empty!” endl; return 0; } else return *--sp; } }; main() { Stack a; a.push(351); a.push(7075461); a.push(3225); cout endl; cout a.pop() “ is poped” endl; cout a.pop() “ is poped” endl; cout a.p

文档评论(0)

asd522513656 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档