#include<iostream>
using namespace std;
template<class T>
//二分查找
int binary_research(T arr[],int len, T findVal)
{
int left = 0;
int right = len - 1;
int mid = left + (right - left) >> 1;
while (left <= right)
{
if (arr[mid] == findVal)
return mid;
else if (arr[mid] > findVal)
right = mid - 1;
else left = mid + 1;
}
return -1;
}
//链式栈
template<class T>
class CMyStack_list
{
struct MyNode
{
T data;
MyNode* pNext;
};
MyNode* pHead;
//头插头删实现栈结构
public:
CMyStack_list();
CMyStack_list(CMyStack_list const& other);//拷贝构造
~CMyStack_list();
void clear();
bool empty()const;
void push(T const& data);
void pop();
};
template<class T>
void CMyStack_list<T>::pop()
{
MyNode* pTemp = pHead;
pHead = pHead->pNext;
delete pTemp;
}
template<class T>
void CMyStack_list<T>::push(T const& data)
{
MyNode* pTemp = new Mynode;
pTemp->data = data;
pTemp->pNext = pHead;
pHead = pTemp;
}
template<class T>
bool CMyStack_list<T>::empty()const
{
return pHead == NULL;
}
template<class T>
CMyStack_list<T>::CMyStack_list(CMyStack_list const& other)
{
pHead = nullptr;
if (other.pHead)
{
pHead = new MyNode;
pHead->data = other.pHead->data;
pHead->pNext = nullptr;
MyNode* pTemp = other.pHead;
MyNode* pCurrent = pHead;
if (pTemp->pNext)
{
pCurrent->pNext = new MyNode;
pCurrent->pNext = pTemp->pNext;
pCurrent->pNext->pNext = nullptr;
pCurrent = pCurrent->pNext;
pTemp = pTemp->pNext;
}
}
}
template<class T>
void CMyStack_list<T>::clear()
{
MyNode* pTemp = nullptr;
while (pHead)
{
pTemp = pHead;
pHead = pHead->pNext;
delete pTemp;
}
}
template<class T>
CMyStack_list<T>::~CMyStack_list()
{
clear();
}
template<class T>
CMyStack_list<T>::CMyStack_list()
{
pHead = nullptr;
}
int main()
{
system("pause");
return 0;
}
二分查找以及栈结构链式
最新推荐文章于 2023-07-17 16:03:38 发布