// 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 普通結點 無論是頭結點還是普通結點都是乙個結構體型別,由指標域和資料域組成 指標域指向下乙個結點,儲存下乙個結點的位址 資料域可以設定成聯合體型別,成員由資料元素和結點個數組成,之所以將...