一個(gè)結(jié)構(gòu)體放node
一個(gè)鏈表類 A
插入是尾插 中間插入就
newNode->插入那個(gè)位置的前驅(qū)的Next
前驅(qū)->newNode 就好了
HPP
#include<iostream>template<typename T>struct Node{	T data;	Node*pNext;};template<typename T>class A{public:A(){ pHead = nullptr; };	   ~A(){		   Node<T>*p = nullptr;		  		   while (pHead)		   {			   p = pHead;			   pHead = pHead->pNext;			   delete p;			   p = nullptr;		   }	   };	   void Insert(T d);	   bool Delete(T d);	   bool Change(T d, T o);	   bool Find(T d);	   void show();PRivate:	Node<T>* pHead;};template<typename T>void A<T>::Insert(T d){	Node<T>*nNode = new Node<T>;	nNode->data = d;	nNode->pNext = nullptr;	if (pHead == nullptr)	{		pHead = nNode;		return;	}	Node<T>*p = pHead;	while (p->pNext)	{		p = p->pNext;	}		p->pNext = nNode;}template<typename T>void A<T>::show(){	Node<T>*p = pHead;		while (p)	{		cout << p->data << endl;		p = p->pNext;	}	}template<typename T>bool A<T>::Find(T d){	Node<T>*p = nullptr;	p = pHead;	while (p)	{		if (p->data==d)		{			return true;		}		p = p->pNext;	}	return false;}template<typename T>bool A<T>::Delete(T d){	Node<T>*p = nullptr;	p = pHead;	if (!p)		return false;	if (pHead->data == d)	{		Node<T>*dd = pHead;		pHead = pHead->pNext;		delete dd;		dd = nullptr;		return true;	}	while (p->pNext)	{		if (p->pNext->data == d)		{			Node<T>*dd = p->pNext;			p->pNext = p->pNext->pNext;			delete dd;			dd = nullptr;			return true;		}		p = p->pNext;	}	return false;}template<typename T>bool A<T>::Change(T d, T o){	if (d==o)	{		return true;	}	Node<T>*p = pHead;	while (p)	{		if (p->data == d)		{			p->data = o;			return true;		}		p = p->pNext;	}	return false;}CPP
#include "h.hpp"using namespace  std;int main(){	A<int>a;	a.Insert(1);	a.Insert('c');//ASCII	a.Insert('g');	a.show();	if (a.Find(1))	{		cout << "find/n";	}	else	{		cout << "gg/n";//GG代表失敗	}	if (a.Change(1,2))//把1變?yōu)?	{		cout << "Change/n";	}	else	{		cout << "gg/n";	}	if (a.Change(1, 2))	{		cout << "Change/n";	}	else	{		cout << "gg/n";	}	if (a.Change(2, 1))	{		cout << "Change/n";	}	else	{		cout << "gg/n";	}	if (a.Delete('e'))	{		cout << "delete/n";	}	else	{		cout << "gg/n";	}	if (a.Delete(1))	{		cout << "delete/n";	}	else	{		cout << "gg/n";	}	if (a.Find(1))	{		cout << "find";	}	else	{		cout << "gg";	}		}這是運(yùn)行結(jié)果![]()
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注