亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dsimpl.h

?? 用列表實現的隊列和棧的算法
?? H
?? 第 1 頁 / 共 2 頁
字號:
                   if(pF==pBPrev) //if two element are neighbor
				   {
				   this->insertElement(pBPrev,&eleTemp);
				   pBPrev=pBPrev->next;
				   
				   this->deleteElement(pFPrev,pF); // exchange the two element
				   this->deleteElement(pBPrev,pB);
				   this->insertElement(pFPrev,pB);
			       this->insertElement(pBPrev,pF);
				   
				   pssle pTemp=pF; //then exchange the two pointer
				   pF=pB;
				   pB=pTemp;
			       
				   pBPrev=pF;//delete the temp element
                   this->deleteElement(pBPrev,&eleTemp);
				   

				   }
                   else
				   {
				   this->deleteElement(pFPrev,pF); // exchange the two element
				   this->deleteElement(pBPrev,pB);
				   this->insertElement(pFPrev,pB);
			       this->insertElement(pBPrev,pF);
				   pssle pTemp=pF; //then exchange the two pointer
				   pF=pB;
				   pB=pTemp;
			   
				   }
			   }
		 
		      
			  pBPrev=pB;
			  pB=pBPrev->next;
		 
		   }

    //if(SDS_TRUE==isKeyUp) // if the list already key up,
     //   return SDS_OK;


	   pFPrev=pF; 
	   pF=pFPrev->next;
	   pBPrev=pF;
	   pB=pBPrev->next;
	   
   }
	   
	   
*/


	  
	break;
  
 

 case SDS_KEYDOWN_SORT:
	   
	   
   while(pB!=listHead)
   {
     
	 while(1)
	 {
	 
       if(getSortKey(pF)<getSortKey(pF->next))
	   {  
		   isSortOk=SDS_FALSE;
   	       if(pF->next==pB)//get the Pointer pB to right position
		       pB=pF;
		   
		
		   pF=pF->next;  //exchange the position of the two element
		   
		   exchangeNeighbor(pFPrev);
		   	    
	   }

	   if(pF->next==pB)
	   {
	        pBPrev=pF;
            break;
	   }
	
	   pFPrev=pF; 
 	   pF=pF->next; 
 	 }
	
	 if(SDS_TRUE==isSortOk)
		 break;
    
	isSortOk=SDS_TRUE;
    
	pF=listHead;
	pFPrev=NULL;
	pB=pBPrev;
 }





	   
	   
	    break;
   default:
	   return SDS_ERROR_WRONG_SORT_MODE;
   }



//clock_t theTime=::clock()-theTimeStart;
//printf("\n%4.2f",(float)theTime/CLOCKS_PER_SEC);


 return SDS_OK;
 } 
	 

 SDS_RESULT sdstd_single_list_impl::traverseThrough(SDS_RESULT (*elementProcessor)(pssle pListElement,sdstd_param inParam,sdstd_param outParam),sdstd_param inParam,sdstd_param outParam)//traverse the list with specifed processor
 {
    pssle pTmp=NULL;
	SDS_RESULT resultTmp=SDS_OK;
	
	traverseInit();
	while(hasNext())
    { 
		getNext(&pTmp);
	    resultTmp=elementProcessor(pTmp,inParam,outParam);
   	    if(SDS_OK!=resultTmp)
	      break; //if error occured,break the loop!
	}
 
	return resultTmp;
 }


 SDS_RESULT sdstd_single_list_impl::reverseList() // reverse the list 
 {
 pssle pPrev=listHead,pMid=NULL,pNext=NULL;

	if(NULL==pPrev)// if list is null, no element exist
		return SDS_OK;
   
	pMid=pPrev->next;
   if(NULL==pMid) // if only one element
	   return SDS_OK;
  
   pNext=pMid->next;// processor the first two element
  
      pMid->next=pPrev;
	  pPrev->next=NULL;
	   
   

  pPrev=pMid;
  pMid=pNext;

 while(1)
  {
	
	// if(NULL==pPrev)// if list is null, no element exist//never match,beacase pPrev=pMid
	//	break;

     if(NULL==pMid) // if touch the end of the list!
	    break;

     pNext=pMid->next;//store the element's next
     pMid->next=pPrev;//make the element's next pointer pointing to the previous element
     
	 pPrev=pMid;// the work pointer move to next element of this list
	 pMid=pNext;
  }
 
  //exchange the listhead and listtail pointer
 pMid=listHead; 
 listHead=listTail;
 listTail=pMid;
 
 return SDS_OK;
 }

 SDS_STRING (* sdstd_single_list_impl::getErrorExpositor())(SDS_RESULT errorNo)
 {
 return sdstd_single_list_impl::errorDetail;
 }


SDS_RESULT sdstd_single_list_impl::exchangeNeighbor(pssle pPrev)
{

//	if(SDS_TRUE==isEmpty()||listHead==listTail) // if list is null
//		return SDS_OK;
	pssle pTmp;
    
	if(NULL==pPrev) // if exchange the first two 
    {
	if(NULL==listHead) return SDS_FAULT; // if list null
	if(NULL==listHead->next) return SDS_FAULT;// if only one node
	
	pTmp=listHead->next;
    listHead->next=pTmp->next;
	pTmp->next=listHead;
    if(listTail==pTmp) //if noly two nodes
		listTail=listHead;

	listHead=pTmp;

    return SDS_OK;
	}
   	
	if(NULL==pPrev->next)//if no next element
       return SDS_FAULT;
	if(NULL==pPrev->next->next) //if no next next element
		return SDS_FAULT;
        
	pTmp=pPrev->next;
	pPrev->next=pTmp->next;
	pTmp->next=pPrev->next->next;
    pPrev->next->next=pTmp;
	if(pPrev->next==listTail) //if list tail be chagned
	listTail=pTmp;


return SDS_OK;
}

/////////////////////////////////////////////////////////////////
// one queue implementation written by Spirit
/////////////////////////////////////////////////////////////////
class sdstd_queue_impl:public sdstd_queue // Abstract interface of queue
{
public:
virtual ~sdstd_queue_impl(){
if(NULL!=innerList)
  delete innerList;
}

sdstd_queue_impl()
{
	innerList=new sdstd_single_list_impl;
	queueSize=-1; //size is not limited
	currentSize=0;
}

virtual SDS_RESULT setSize(int queueSize)  // set the size of the queue
{
if(queueSize<=0) return SDS_ERROR_INVALID_PARAM;

this->queueSize=queueSize;

return SDS_OK;
}


virtual SDS_RESULT inQueue(sdstd_data inData)  // get data into queue
{
  if(queueSize>0)
	if(currentSize>=queueSize) //if touch the limited size
	  return SDS_ERROR_BUFFER_FULL;

 SDS_RESULT errorNo=innerList->addTail(sdstd_single_list::createElement(inData));
 if(SDS_OK==errorNo) currentSize++; //increase the currentSize with one
 return errorNo; 
}


virtual SDS_RESULT outQueue(sdstd_data *outData)  // get data out of queue
{
if(SDS_TRUE==isEmpty()) return SDS_ERROR_REQUIREMENT_OBJECT_NULL; // if the list is null
pssle pOuter=NULL;
innerList->getHead(&pOuter);
*outData=pOuter->data;
SDS_RESULT errorNo=innerList->deleteElement(NULL,pOuter);//delete the list head
if(SDS_OK==errorNo)// if successful
{
	delete pOuter;//delete element node
    currentSize--;
}
return errorNo;
}

virtual SDS_RESULT peekQueue(sdstd_data *outData)  // peek the data which will be outQueue next time,but not get the data out of the queue
{
if(SDS_TRUE==isEmpty()) return SDS_ERROR_REQUIREMENT_OBJECT_NULL; // if the list is null
pssle pOuter=NULL;
innerList->getHead(&pOuter);
*outData=pOuter->data;
return SDS_OK;
}


virtual SDS_BOOL   isEmpty() const // test whether the queue is null or not
{
return innerList->isEmpty();
}


private:
	sdstd_single_list *innerList;
    int queueSize;
	int currentSize;

};



/////////////////////////////////////////////////////////////////
// one stack implementation written by Spirit
/////////////////////////////////////////////////////////////////
class sdstd_stack_impl:public sdstd_stack // Abstract interface of queue
{
public:
virtual ~sdstd_stack_impl(){
//just for dynamic deleting object and avoid memory leak
	if(NULL!=innerList)
      delete innerList;
}

sdstd_stack_impl()
{
  innerList=new sdstd_single_list_impl;
  stackSize=-1; //size is not limited
  currentSize=0;
}

virtual SDS_RESULT push(sdstd_data inData) // push data to stack
{
 
	if(stackSize>0)
 	 if(currentSize>=stackSize) //if touch the limited size
	   return SDS_ERROR_BUFFER_FULL;

 SDS_RESULT errorNo=innerList->addHead(sdstd_single_list::createElement(inData));
 if(SDS_OK==errorNo) currentSize++; //increase the currentSize with one
 return errorNo; 
}



virtual SDS_RESULT pop(sdstd_data *outData)  //pop the data
{
if(SDS_TRUE==isEmpty()) return SDS_ERROR_REQUIREMENT_OBJECT_NULL; // if the list is null
pssle pOuter=NULL;
innerList->getHead(&pOuter);
*outData=pOuter->data;
SDS_RESULT errorNo=innerList->deleteElement(NULL,pOuter);//delete the list head
if(SDS_OK==errorNo)// if successful
{
	delete pOuter;//delete element node
    currentSize--;
}
return errorNo;

}


virtual SDS_RESULT peek(sdstd_data *outData) // peek the data which will be pop next time,but not get the data out of the stack
{
if(SDS_TRUE==isEmpty()) return SDS_ERROR_REQUIREMENT_OBJECT_NULL; // if the list is null
pssle pOuter=NULL;
innerList->getHead(&pOuter);
*outData=pOuter->data;
return SDS_OK;

}


virtual SDS_BOOL   isEmpty() const// test whether the stack is null or not
{
return innerList->isEmpty();
}


virtual SDS_RESULT setSize(int stackSize) // set the size of the stack
{

	if(stackSize<=0) return SDS_ERROR_INVALID_PARAM;

    this->stackSize=stackSize;

    return SDS_OK;


}


private:
	sdstd_single_list *innerList;
	int stackSize;
	int currentSize;
};










#elif defined(_PROGRAMMING_WITH_C_)              // if C Language
     

     


#else                                            //if define nothing,error
        
//you do NOT define programming language // just for causing error!


#endif
 
#endif

#endif  
  

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美日韩综合aⅴ视频| 欧美日韩国产精选| 免费成人在线网站| 爽好多水快深点欧美视频| 亚洲欧美成aⅴ人在线观看| 精品国产免费一区二区三区香蕉| 欧美日韩在线播放一区| 成人福利在线看| 国产成人免费视频精品含羞草妖精| 国产精品全国免费观看高清| 亚洲欧美综合另类在线卡通| 国产精品美日韩| 久久噜噜亚洲综合| 久久蜜桃av一区精品变态类天堂 | 国产午夜精品一区二区| 在线成人免费视频| 5月丁香婷婷综合| 色综合久久久久久久| 欧美图区在线视频| 欧美色精品在线视频| 99re热视频精品| 日韩极品在线观看| 日韩中文字幕91| 久久se精品一区精品二区| 成人免费观看男女羞羞视频| 不卡欧美aaaaa| 在线欧美日韩国产| 色诱亚洲精品久久久久久| 6080午夜不卡| 久久久国际精品| 国产精品天干天干在观线| 亚洲一二三区在线观看| 亚洲国产综合色| 肉色丝袜一区二区| 蜜臀av一区二区| 国产寡妇亲子伦一区二区| 福利一区在线观看| 97精品超碰一区二区三区| 欧美伊人久久久久久久久影院 | 天天操天天色综合| 日韩—二三区免费观看av| 国产精品亚洲人在线观看| 成人免费视频一区二区| 欧美日韩国产在线播放网站| 欧美成人午夜电影| 国产精品国产三级国产a| 亚洲成人自拍一区| 99久久国产免费看| 精品久久一区二区三区| 亚洲视频每日更新| 亚洲成人av免费| 国产精品一区专区| 欧美视频在线不卡| 91精品国产综合久久久蜜臀粉嫩 | 国产毛片精品国产一区二区三区| caoporn国产精品| 欧美性猛交xxxx乱大交退制版 | 丝袜亚洲精品中文字幕一区| 国产又粗又猛又爽又黄91精品| aaa国产一区| 精品三级在线看| 亚洲一区二三区| 粉嫩欧美一区二区三区高清影视| 欧美性欧美巨大黑白大战| 国产三级精品三级| 亚洲成人动漫在线观看| 美日韩一区二区| 日韩一区二区中文字幕| 一区二区在线观看免费| 国产成人免费av在线| 精品卡一卡二卡三卡四在线| 亚洲精品视频观看| 成人性生交大片免费看中文网站| 国产成人精品免费看| 久久综合色8888| 日韩国产高清在线| 91行情网站电视在线观看高清版| 日韩欧美在线123| 另类综合日韩欧美亚洲| 欧美亚洲国产bt| 一区二区三区中文字幕电影| 日韩 欧美一区二区三区| 欧美天天综合网| 亚洲国产中文字幕| 欧美亚洲动漫精品| 免费一区二区视频| 欧美刺激午夜性久久久久久久| 亚洲国产综合91精品麻豆| 色婷婷亚洲精品| 亚洲成年人影院| 91精品在线观看入口| 亚洲成人动漫一区| 色哟哟一区二区三区| 亚洲午夜在线视频| 欧美亚一区二区| 日韩精品久久理论片| 91久久奴性调教| 亚洲影院理伦片| 欧美色网站导航| 亚洲bt欧美bt精品| 欧美成人精品1314www| 狠狠色丁香婷婷综合| 久久人人97超碰com| 丁香婷婷综合色啪| 亚洲精品亚洲人成人网| 色天天综合色天天久久| 婷婷一区二区三区| 国产日韩三级在线| 99久久精品99国产精品| 一区二区三区四区在线播放 | 亚洲国产精品久久人人爱蜜臀| 欧美色图片你懂的| 午夜精品一区二区三区三上悠亚| 日韩三级中文字幕| 国产成人午夜高潮毛片| 悠悠色在线精品| 国产欧美一区二区精品忘忧草 | 亚洲另类在线一区| 亚洲国产人成综合网站| 欧美韩日一区二区三区四区| 91香蕉国产在线观看软件| 午夜亚洲福利老司机| 日韩久久久精品| 91官网在线观看| 久久丁香综合五月国产三级网站| 国产目拍亚洲精品99久久精品| 成人免费看片app下载| 国产真实乱子伦精品视频| 亚洲欧洲中文日韩久久av乱码| 91精品国产美女浴室洗澡无遮挡| 成人性色生活片| 国产中文字幕一区| 日本不卡123| 婷婷综合另类小说色区| 亚洲欧美国产77777| 国产精品福利一区二区三区| 国产亚洲欧洲一区高清在线观看| 欧美男同性恋视频网站| 欧美亚洲尤物久久| 91蜜桃网址入口| 成人免费福利片| 成人免费电影视频| 成人网在线免费视频| 国产精品亚洲一区二区三区在线| 麻豆成人91精品二区三区| 午夜精品影院在线观看| 性做久久久久久免费观看欧美| 一区二区三区四区视频精品免费 | 日本乱人伦一区| 99久久er热在这里只有精品66| 国产乱码精品一区二区三区av | 日本乱人伦一区| 91极品视觉盛宴| 欧美视频在线一区二区三区 | 国产一区二区三区久久久 | 国产精品免费av| 亚洲欧洲99久久| 一区二区三区在线观看动漫 | 欧美日韩一区二区三区在线看 | 精品电影一区二区| 精品欧美乱码久久久久久1区2区| 日韩三级免费观看| 精品久久久久久久久久久院品网 | 欧美亚洲国产bt| 9191国产精品| 精品久久久久99| 国产精品私人自拍| 一区二区三区中文字幕电影| 亚洲成人免费电影| 精品一区免费av| 成人在线视频一区| 91视视频在线观看入口直接观看www| www.亚洲色图| 欧美日韩精品一区二区三区蜜桃| 日韩欧美在线影院| 国产精品免费av| 亚洲福利一区二区三区| 久草中文综合在线| 成人动漫一区二区| 欧美三级三级三级| 久久网站热最新地址| 综合激情网...| 青青草国产成人99久久| 成人激情校园春色| 欧美高清一级片在线| 久久男人中文字幕资源站| 一区二区三区在线视频免费观看| 婷婷中文字幕综合| www.视频一区| 日韩午夜精品电影| 亚洲视频小说图片| 久久国产综合精品| 91免费观看视频在线| 久久免费看少妇高潮| 亚洲五月六月丁香激情| 国精品**一区二区三区在线蜜桃| 在线精品观看国产| 国产女主播在线一区二区| 奇米一区二区三区av| 色吊一区二区三区|