成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

C++如何實(shí)現(xiàn)單鏈表的構(gòu)造-創(chuàng)新互聯(lián)

這篇文章主要講解了C++如何實(shí)現(xiàn)單鏈表的構(gòu)造,內(nèi)容清晰明了,對此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。

公司主營業(yè)務(wù):網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出株洲免費(fèi)做網(wǎng)站回饋大家。

單鏈表的構(gòu)造,包括最常用函數(shù),setData(),Insert(),Remove(),getData(),Search()。

代碼如下:

#include <iostream>
#include <stdlib.h>
 
using namespace std;
 
template<class T>
struct LinkNode{
  T data;
  LinkNode<T> *link;
  LinkNode(LinkNode<T> *ptr=NULL){link=ptr;}
  LinkNode(const T& item, LinkNode<T> *ptr=NULL){data=item; link=ptr;}
};
 
template<class T>
class List{
public:
  List(){first=new LinkNode<T>;}
  List(const T& x){first=new LinkNode<T>(x);}
  List(List<T> &L);
  ~List(){makeEmpty();}
  void makeEmpty();
  int Length()const;
  LinkNode<T> *getHead()const{return first;}
  LinkNode<T> *Search(T x);
  LinkNode<T> *Locate(int i);
  bool getData(int i, T &x)const;
  void setData(int i,T &x);
  bool Insert(int i,T &x);
  bool Remove(int i, T &x);
  bool IsEmpty()const{return (first->link==NULL)&#63;true:false;}
  bool IsFull()const{ return false;}
  void Sort();
  void inputFront(T endTag);
  void inputRear(T endTag);
  void output();
  List<T>& operator=(List<T> &L);
private:
  LinkNode<T> *first;
};
 
template<class T>
void List<T>::makeEmpty(){
  //if(first->link==NULL)return;
  LinkNode<T> *p=first->link;
  while(p!=NULL){
   first->link=p->link;
   delete p;
   p=first->link;
  }
}
 
template<class T>
LinkNode<T> *List<T>::Search(T x){
  LinkNode<T> *p=first->link;
  while(p!=NULL){
   if(p->data==x)break;
   p=p->link;
  }
  return p;//無論是否找到都返回p,若找到則返回p,沒有則返回空指針
}
 
template<class T>
LinkNode<T> *List<T>::Locate(int i){
  //這個(gè)定位函數(shù)的作用還是非常大的,方便后來的函數(shù)根據(jù)i定位到相應(yīng)位置的節(jié)點(diǎn)
  if(i<0)return NULL;
  int sum=0;
  LinkNode<T> *p=first;
  while(p!=NULL&&sum<i){
   sum++;
   p=p->link;
  }
  return p;//無論是否為空指針,返回的都是到達(dá)i位置的指針,如果沒有到達(dá)就是已經(jīng)到結(jié)尾了
}
 
template<class T>
bool List<T>::getData(int i, T& x)const{
  if(i<0)return false;
  LinkNode<T> *p=Locate(i);
  if(p==NULL)return false;
  else{
  x=p->data;
  return true;
  }
}
 
template<class T>
void List<T>::setData(int i, T& x){
  if(i<0)return;
  LinkNode<T> *p=Locate(i);
  if(p==NULL)return;
  else{
   p->data=x;
  }
}
 
template<class T>
bool List<T>::Insert(int i, T &x){
   //LinkNode<T> *pre=Locate(i-1);
   //這里是指插入到第i個(gè)元素之后的情況
   LinkNode<T> *cur=Locate(i);
   if(cur==NULL)return false;
   LinkNode<T> *p=new LinkNode<T>(x);
   if(p==NULL){cerr<<"存儲(chǔ)分配錯(cuò)誤!"<<endl;exit(1);}
   //if(pre==NULL||cur==NULL||p==NULL)return false;
   else{
     p->link=cur->link;
     cur->link=p;
     return true;
   }
}
 
template<class T>
bool List<T>::Remove(int i, T& x){
  //刪除第i個(gè)位置的元素
  LinkNode<T> *pre=Locate(i-1);
  if(pre==NULL)return false;
  LinkNode<T> *current=pre->link;
  if(current==NULL)return false;
  x=current->data;
  pre->link=current->link;
  delete current;
  return true;
}
 
template<class T>
void List<T>::output(){
  LinkNode<T> *current=first->link;
  while(current!=NULL){
   cout<<current->data<<" ";
   current=current->link;
  }
}
 
template<class T>
List<T>& List<T>::operator=(List<T>& L){
  //這是賦值方法
  LinkNode<T> *srcptr=L.getHead(), *p=srcptr->link;
  LinkNode<T> *desptr=first=new LinkNode<T>;
  T value;
  while(p!=NULL){
   value=p->data;
   desptr->link=new LinkNode<T>(value);
   desptr=desptr->link;
   p=p->link;
  }
  return *this;
  //用上面這種方法可以更好地實(shí)現(xiàn)賦值
//  LinkNode<T> *pre=L.getHead();
//  if(pre==NULL){
//   first=NULL;
//   return *this;
//  }
//  LinkNode<T> *p=first=new LinkNode<T>;
//  first->link=p;
//  int sum=L.Length();
//  T &x;
//  int i=1;
//  while(i<=sum){
//   L.getData(i++,x);
//   p=new LinkNode<T>(x);
//   p=p->link;
//  }
//  return *this;
 
}
 
template<class T>
int List<T>::Length()const{
  int sum=0;
  LinkNode<T> *p=first->link;
  while(p!=NULL){
   sum++;
   first->link=p->link;
   delete p;
   p=first->link;
  }
  return sum;
}
 
 
//前插法建立單鏈表
template<class T>
void List<T>::inputFront(T endTag){
  LinkNode<T> *newNode;
  T value;
  makeEmpty();
  cin>>value;
  while(value!=endTag){
   newNode=new LinkNode<T>(value);
   if(newNode==NULL){cerr<<"內(nèi)存分配錯(cuò)誤!"<<endl; exit(1);}
   newNode->link=first->link;
   first->link=newNode;
   cin>>value;
  }
}
 
//后插法建立單鏈表
template<class T>
void List<T>::inputRear(T endTag){
  LinkNode<T> *newNode=new LinkNode<T>, *last;
  T value;
  last=first=new LinkNode<T>;
  cin>>value;
  while(value!=endTag){
   newNode=new LinkNode<T>(value);
   if(newNode==NULL){cerr<<""<<endl;exit(1);}
   last->link=newNode;
   last=newNode;
   cin>>value;
  }
}
 
//復(fù)制構(gòu)造函數(shù)
template<class T>
List<T>::List(List<T> &L){
  //復(fù)制構(gòu)造函數(shù)
  T value;
  LinkNode<T> *srcptr=L.gethead(), p=srcptr->link;
  LinkNode<T> *desptr=first->link=new LinkNode<T>;
  while(p!=NULL){
   value=p->data;
   desptr=new LinkNode<T>(value);
   desptr=desptr->link;
   p=p->link;
  }
}

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站jinyejixie.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)頁標(biāo)題:C++如何實(shí)現(xiàn)單鏈表的構(gòu)造-創(chuàng)新互聯(lián)
URL鏈接:http://jinyejixie.com/article18/dijcgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、網(wǎng)站營銷、外貿(mào)網(wǎng)站建設(shè)網(wǎng)站制作、定制網(wǎng)站、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
墨玉县| 庄河市| 沾益县| 胶南市| 桐柏县| 浦江县| 周宁县| 临洮县| 海口市| 闻喜县| 云阳县| 乐亭县| 綦江县| 林甸县| 安宁市| 松原市| 邛崃市| 西宁市| 岫岩| 桐庐县| 益阳市| 九台市| 邵武市| 叶城县| 阿克| 客服| 汉沽区| 奇台县| 青海省| 楚雄市| 定日县| 景洪市| 长沙县| 莱芜市| 安庆市| 广灵县| 大理市| 新密市| 阿鲁科尔沁旗| 谷城县| 临西县|