正在加载图片...
这里,我们自己定义了一些堆栈的数据结构和操作,实现了堆栈的初始化、push、pop、判 断是否为空、及析构 ∥堆栈结构 typedef struct! HGLOBAL hMem;∥堆栈全局内存句柄 PONT* pMy Stack;指向该句柄的指针 LONG Elements Nu;堆栈的大小 LONG ptr,∥指向栈顶的指针 IMYSTACK, ∥始化堆栈的操作,第二个参数指定堆栈的大小 BOOL InitStack(HWND hWnd, LONG StackLen) SeedFillStack. ElementsNum= StackLen;∥将堆栈的大小赋值 if(Seed FilIStack hMem=Global Alloc( GHND, SeedFillStack ElementsNum* sizeof( POINT))=NULL) ∥内存分配错误,返回 FALSE Message Box(hWnd, Error alloc memory! " "Error Message", MB OK MB ICONEXCLAMATION return False SeedFillStack. lpMy Stack=(POINT*)GlobalLock(SeedFillStack hMem); 缓冲区全部清零 memset(SeedFillStack lpMyStack, O, SeedFillStack ElementsNum sizeof( POINT) ∥堆顶指针为零 SeedFillStack ptr=0 ∥成功,返回TRUE return tRUe ∥析构函数 void DelnitStackO ∥释放内存,重置堆栈大小及栈顶指针 Global Unlock( SeedFillStack. hMem) Global Free(Seed FillStack. hMem) SeedFillStack SeedFillStack. ptr=0这里,我们自己定义了一些堆栈的数据结构和操作,实现了堆栈的初始化、push、pop、判 断是否为空、及析构。 //堆栈结构 typedef struct{ HGLOBAL hMem; //堆栈全局内存句柄 POINT *lpMyStack; //指向该句柄的指针 LONG ElementsNum; //堆栈的大小 LONG ptr; //指向栈顶的指针 }MYSTACK; //初始化堆栈的操作,第二个参数指定堆栈的大小 BOOL InitStack(HWND hWnd,LONG StackLen) { SeedFillStack.ElementsNum=StackLen; //将堆栈的大小赋值 if((SeedFillStack.hMem=GlobalAlloc(GHND,SeedFillStack.ElementsNum* sizeof(POINT)))==NULL) { //内存分配错误,返回 FALSE; MessageBox(hWnd,"Error alloc memory!","ErrorMessage",MB_OK| MB_ICONEXCLAMATION); return FALSE; } SeedFillStack.lpMyStack=(POINT *)GlobalLock(SeedFillStack.hMem); //缓冲区全部清零 memset(SeedFillStack.lpMyStack,0,SeedFillStack.ElementsNum* sizeof(POINT)); //堆顶指针为零 SeedFillStack.ptr=0; //成功,返回 TRUE return TRUE; } //析构函数 void DeInitStack() { //释放内存,重置堆栈大小及栈顶指针。 GlobalUnlock(SeedFillStack.hMem); GlobalFree(SeedFillStack.hMem); SeedFillStack.ElementsNum=0; SeedFillStack.ptr=0;
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有