freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

c++電子課件(中)第七章-預覽頁

2025-11-08 15:50 上一頁面

下一頁面
 

【正文】 (*cp) [30] [20]。 兩個數(shù)組都是由 600個浮點數(shù)組成,前者是只有 一個元素的三維數(shù)組 ,每個元素為 30行 20列的二維數(shù)組,而另一個是有 30個元素的二維數(shù)組 ,每個元素為 20個元素的一維數(shù)組。返回一個空指針( NULL),表示發(fā)生了異常,堆資源不足,分配失敗??諔抑羔樖浅绦蝈e誤的一個根源)。本教材不討論 new()和 delete()的重載。如果 new返回的指針值丟失,則所分配的 自由存儲區(qū) 空間無法回收,稱內存泄漏,同一空間重復釋放也是危險的,因為 該空間可能已另分配 ,所以必須妥善保存 new返回的指針,以保證不發(fā)生內存泄漏,也必須保證不會重復釋放自由存儲區(qū) 內存空間。 對象與構造函數(shù) 類對象動態(tài)建立與刪除過程: 通過 new建立的對象要調用構造函數(shù),通過 delete刪除對象也要調用析構函數(shù)。 //先析構,然后將內存空間返回給自由存儲區(qū); 自由存儲區(qū) 對象的生命期并不依賴于建立它的作用域,所以除非程序結束, 自由存儲區(qū) 對象(無名對象)的生命期不會到期,并且需要顯式地用 delete語句析構該類對象,上例執(zhí)行 delete語句時, C++自動調用商品類的析構函數(shù)。這些參數(shù)即構造函數(shù)的參數(shù)。 這稱為 淺復制?!闭Z句,則如果先析構函數(shù) obj1時,自由存儲區(qū) 對象已經(jīng)釋放,以后再析構obj2時出現(xiàn)了二次釋放的問題。 學生類定義: class student{ char *pName。s)。s)。由此可見, 構造函數(shù)并非僅做初始化工作 。在使用中,把它作為一個成員對象,就像使用 string類對象那樣。標準string類模板就是典型的例子。線性表的邏輯結構是 n個數(shù)據(jù)元素的有限序列( a1,a2,…,an )。 infon1 ^ info2 info1 info0 …… head 圖 單鏈表結構 單鏈表的第一個結點的地址可通過鏈表的表頭指針 head找到。 //數(shù)據(jù)為整型 struct node{ Datatype info。 但結構成員決不能是結構自身類型 ,即結構不能自己定義自己,這會導致一個無窮遞歸的定義。 head head 插在鏈首: 首先新結點的 link指針指向 info0所在結點 , 然后 , head指向新結點 。 要使算法中沒有特殊者 , 可以給每一個鏈表加上一個 表頭結點 , 如下圖所示 。 head=new node。 //添入數(shù)據(jù) taillink= p。 //返回頭指針 } 單鏈表基本算法 head ^ info0 P ^ P info1 2. 向前生成鏈表算法: node *createup(){ node *head,*p。 while(cindata){ //建立的總是第一個結點 p=new node。 //頭結點放新結點之前 } return head。pinfo!=data) p=plink。 void insert(node *p,Datatype x){ node *q=new node。 } 單鏈表基本算法 5. 刪除單鏈表結點 *p后面結點: void del (node *p){ node *q。 //如果要把該結點移入另一個鏈中 , 則可將 q返回 。 //數(shù)據(jù)域 NodeT *link。 //生成 一般結點的構造函數(shù) void InsertAfter(NodeT* p)。 定義鏈表類 : templatetypename Tclass List{ NodeT *head,*tail。 //清空鏈表 ,只余表頭結點 NodeT* Find(T data)。 //可用來 向前生成鏈表 void InsertRear(NodeT* p)。 }。 在本例中程序只需調用類模板中的成員函數(shù)就可以完成所有鏈表操作。 通常對 Node類復制的結果應是一個孤立結點: template typename T NodeT::Node(Node amp。該函數(shù)與 Node的有參構造函數(shù)功能基本相同。為了克服這一缺點,可采用 雙向鏈表 ( Double Linked List)。 p llinkrlink指示本結點 的前驅結點的后繼結點,即本結點,間接訪問符 可以連續(xù)使用 。允許進行插入和刪除的一端叫做 棧頂 (top),而另一端叫 棧底 (bottom)。所以棧又稱作 后進先出( LIFO: Last In First Out)的線性表 。而出棧時順序相反,最后進棧的 an1最先出棧,而最先進棧的 a0最后出棧。 棧 templatetypename Tclass Stack{ int top。 //構造函數(shù) ,棧如不指定大小,設為 20元素 ~Stack(){delete[ ] elements。 //彈出 , top T GetElem(int i)。} //判棧滿 void PrintStack()。 for(i=0。 ()。 if(()) cout棧空 endl。\t39。 NodeT *link。 }。 //析構函數(shù) void Push(const T amp。 //取棧頂元素 void MakeEmpty()。順序棧必須先開一定大小內存空間,執(zhí)行起來簡單,速度快,可能溢出。 為實現(xiàn)運算符的優(yōu)先級,采用兩個棧:一個 數(shù)棧 ,一個 運算符棧 。否則將棧頂運算符出棧,與數(shù)字棧出棧的兩個數(shù)據(jù)進行運算,結果壓入數(shù)棧,再將新運算符壓棧。 表達式結束符使用=號 , 清空棧用 ‘ c’字符 。 public: Calculator(void){}。Num2)。 //清除 隊列 隊列的基本概念: 隊列 (Queue)也是一種限定存取位置的線性表。隊列的這種特性正好與棧相反,叫做 先進先出 FIFO(First In First Out)。實際上 對象很大時,總是由索引(指針)來排隊 。鏈首出隊,鏈尾入隊。如 n=0,稱為空樹。這是一個遞歸方法定義的數(shù)據(jù)結構。 分支結點 , 度 ≥1的結點 。 結點的層次 , 從根到該結點所經(jīng)路徑上的分支條數(shù) 。二叉樹是結點的一個有限集合 , 該集合或為空 , 或是由一個根結點及兩棵樹分別稱為左子樹和右子樹的 ( 注意有左右之分 ) 互不相交的二叉樹組成 , 其中左右子樹分別可以為空子樹或均為空樹 。 樹的概念: 二叉樹的概念(選讀) 【 例 】 畫出有三個結點的所有二叉樹 。每個結點有三個域:數(shù)據(jù)域、左孩子指針和右孩子指針,見圖 。 public: Node(){ lchild=NULL。 rchild=right。} //修改結點數(shù)據(jù) NodeT *Getleft(){return lchild。} //設置右指針 friend class BinaryTreeT。 圖 二叉樹遍歷 中序遍歷結果為 D B G E A F H C。 為什么 ? 請讀者自己思考 。 //中序遍歷 void PreOrder(NodeT *Current)。b)。} //析構函數(shù) void Creat(T* data,int n)。} //后序遍歷,公有函數(shù)為接口 }??梢宰C明已知先序和中序訪問次序可以唯一確定一棵二叉樹。再由先序 D G知,D為 B的右子樹根結點,由中序 D G知 G為 D的右子樹。 排序二叉樹 (選讀) 二叉排序樹用中序遍歷就可以得到由小到大的有序序列,如圖 { 8, 10, 11, 12,15, 16, 18, 22, 24, 26, 29}。 3. 如 ai小于根結點,則去左子樹,否則去右子樹,按此法查找,直到成為空樹,則安放此位置。 while(temp!=NULL){ if(tempinfo==data)return temp。} 【 例 】 排序二叉樹查找函數(shù)。 cout請輸入動態(tài)數(shù)組的元素個數(shù) endl。 coutpcendl。采用 指針數(shù)組方式 來完成二維數(shù)組的動態(tài)創(chuàng)建。 data = new double*[m]。jm。 } } 內存的分配與釋放 【 例 】 for (i=0。j++) data[i][j]=i*n+j。 } 二維數(shù)組的撤銷與內存釋放: void de_allocate(double **data){ int i。 //注意撤銷次序,與設置相反 delete[] data。 float Total_value。 Name=name。 } ~CGoods(){ cout調用析構函數(shù) endl。 CGoods *pc,*pc1,*pc2。 cinn。 delete []pc2。 cout默認“ endl。 } 例 實現(xiàn)深復制 復制構造函數(shù): student::student(student amp。 coutpNameendl。 delete[] pName。 delete[] pName。 return *this。return 0。 link=NULL。 if(link==NULL) tempP=NULL。 } templatetypename TListT::~List(){ MakeEmpty()。 headlink=tempPlink。 while(tempP!=NULLamp。 //搜索成功返回該結點地址,不成功返回 NULL } templatetypename Tint ListT::Length(){ //鏈表長度 NodeT* tempP=headlink。} return count。 tempP=tempPlink。 if(tail==head) tail=p。} 鏈表類成員函數(shù): templatetypename T void ListT::InsertOrder(NodeT *p){ NodeT *tempP=headlink,*tempQ=head。 } tempQInsertAfter(p)。} 例 單鏈表類型模板 鏈表類成員函數(shù): templatetypename T NodeT* ListT::DeleteNode(NodeT* p){ NodeT* tempP=head。 if(tempPlink==tail) tail=tempP。 int a[16],i,j。i++)cina[i]。 (P1)。 coutlist1長度: ()endl。 P1=(j)。 coutlist1長度: ()endl。i16。 return 0。 int age。\039。} void show(){coutid39。sex39。address39。phy39。electronendl。 tempP=tempPlink。 int i,j。m39。w39。 for(i=0。 //向前生成 list1 P1=(n[i])。 ()。 //學號由構造函數(shù)轉換為學生類 if(P1!=NULL){ P1=(P1)。 } else cout未找到 endl。i++){ P1=(n[i])。} 【 例 】 雙向鏈表類模板和結點類模板 雙鏈表結點模板類: templatetypename T class DblNode{ T info。 //頭結點構造函數(shù) T Getinfo(){return info。 templatetypename T DblNodeT::DblNode(){//頭結點 llink=rlink=NULL。 } 【 例 】 雙向鏈表類模板和結點類模板 雙鏈表模板類: templatetypename Tclass DblList{ DblNodeT *head,*current。 data)。 //計算鏈表長度 D
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1