單鏈表的實現 帶頭結點

2021-06-19 19:07:55 字數 3347 閱讀 4840

// linklist.cpp : 定義控制台應用程式的入口點。 

// 

#include "stdafx.h" 

#include

using namespace std; 

template

struct node 

;  template

class linklist   

;  template

linklist::linklist() 

template

linklist::linklist(const linklist& otherlist) 

}  template

void linklist::initlist()//鍊錶已經存在,所有的結點被銷毀 

template

void linklist::destroylist()//銷毀鍊錶中所有的結點,包括頭結點 

head = null; 

m_length = 0; 

}  template

bool linklist::isempty()//判斷鍊錶是否為空 

else 

}  template

void linklist::creatinserthead()//頭插法建立鍊錶 

}  template

void linklist::creatinsertrear()//尾插法建立鍊錶 

}  template

void linklist::getfirstdata(t& firstdata) 

else 

template

void linklist::search(const t searchdata)//搜尋指定的結點 

if (current == null) 

template

void linklist::insertrear(const t newdata)//在表尾插入新的結點 

node* newnode = new node; 

newnode->data = newdata; 

newnode->next = current->next; 

current->next = newnode; 

m_length++; 

}  template

void linklist::insertbefore(const int pos,const t newdata)//在指定的位置前插入新的結點 

else 

newnode->next = current->next; 

current->next =newnode; 

}  m_length++; 

}  template

void linklist::insertafter(const int pos,const t newdata)//在指定的位置後插入新的結點 

newnode->next = current->next; 

current->next =newnode; 

m_length++; 

}  template

void linklist::deletenode(const t deletedata)//刪除結點 

if (current == null) 

node*temp; 

temp = current->next; 

deletedata = temp->data; 

current->next = temp->next; 

delete temp; 

m_length--; 

}  template

void linklist::reverse()//逆置鍊錶 

}  template

const linklist& linklist::operator=(const linklist& otherlist)//過載賦值運算子 

while (otherlistcurrent!=null) 

}  return *this; 

}  template

ostream& operator<< <>(ostream& cout,const linklist& linklist) 

}  else 

else 

}  while(currenta!=null) 

while(currentb!=null) 

}  template

void linklist::merge2(linklist& a,linklist& b)//單鏈表a和b,ab增c增,c=a+b,利用原表a和b的空間,允許有相同元素 

else 

}  if(currenta!=null) 

if(currentb!=null) 

}  template

void linklist::intersect1(linklist& a,linklist& b)//ab增c增,c=a交b,不利用原表a和b,ab中元素均無重複,但a和b中可能有相同元素,c中元素各不相同 

else if (currenta->data > currentb->data) 

else 

}  currentc->next = null; 

}  template

void linklist::intersect2(linklist& a,linklist& b)//ab增c增,c=a交b,不利用原表a和b,ab中元素可能有重複元素,c中元素各不相同 

else if (currenta->data > currentb->data) 

else 

else 

}            

currenta = currenta->next; 

currentb = currentb->next; 

m_length++; 

}  } 

currentc->next = null; 

}  template

void linklist::difference(linklist& a)//ab增c增,b=b-a,a中無重複,b中無重複,不能破壞a空間,但是直接在b表中修改      

else if (currenta->data < currentb->data) 

else 

}  if (currentb == null) 

}  template

linklist::~linklist() 

int test(int argc, char* argv) 

帶頭結點的單鏈表實現

includeusing namespace std typedef char datatype struct node 按序號查詢鍊錶 node getnode node head,int i if i j return null else return p 說明沒找到第 i 個結點 按值查詢 n...

帶頭結點的單鏈表實現

帶頭結點的單鏈表實現 通過對結點的指標操作來實現各個核心功能.中要注重核心思想,但是必要的安全檢查還是必須的 後期可以省略,但是要有這個意識 include include define null null typedef int elemtype typedef struct lnode node...

帶頭結點的單鏈表

帶頭結點的單鏈表 1 頭結點 在棧區開闢,指標域指向第乙個首元結點,資料域不儲存資料,可以儲存當前結點的個數 2 普通結點 無論是頭結點還是普通結點都是乙個結構體型別,由指標域和資料域組成 指標域指向下乙個結點,儲存下乙個結點的位址 資料域可以設定成聯合體型別,成員由資料元素和結點個數組成,之所以將...