插入、刪除結點的**有點多,但這樣提高了**的可讀性,且不增加時間複雜度,不會影響程式效能
#include
using namespace std;
template
class clist;
template
class node
;template
class clist
;//為頭結點分配空間
template
void clist::create()
template
clist::clist()
//刪除所有結點
template
void clist::destroy()
}template
clist::~clist()
//判斷是否為空
template
bool clist::isempty()
else }
//從表的最後加入乙個元素
template
void clist::append(const t &data)
else
m_pend->m_pnext = pt;
++m_len;
}//刪除乙個元素
template
void clist::delete(const int &pos)
else if(ix == pos - 1)
pt = pt->m_pnext;
} if(!ppre)//如果指標為空則說明pos是指第乙個元素
if(!pbehind)//如果指標為空則說明pos是指最後乙個元素
ppre->m_pnext = pbehind;
--m_len;
}//輸出所有資料
template
void clist::print()
//查詢資料
template
t clist::find(const int &pos)
pt = pt->m_pnext;
} return null;
}template
void clist::insert(const int &pos,const t &data)
if(i == pos)
pt = pt->m_pnext;
} node *pnew = new node;
pnew->m_data = data;
if(!ppre)//如果指標為空則說明pos是指第乙個元素
if(!pbehind)//如果指標為空則說明pos是指最後乙個元素
ppre->m_pnext = pnew;
pnew->m_pnext = pt;
++m_len;
}本文標題: c++語言實現線性表之鍊錶例項
本文位址:
續 線性表之雙向鍊錶 C語言實現
在前文實現單向鍊錶的基本操作下,本文實現 雙向鍊錶的基本操作.雙向鍊錶與單鏈表差異,是雙向鍊錶結點中有 前向指標和後向指標.所以在插入和刪除 新結點元素時候不見要考慮後向指標還要考慮 前向指標.以下是雙向鍊錶的c includetypedef struct node node 鍊錶的初始化 node...
線性表c語言實現
lineartable.h pragma once 線性表的實現 define maxsize 20 define ok 1 define error 2 typedef struct list list t 線性表初始化 void initlist list t list 根據下表查詢資料 int...
C語言實現線性表
include include define maxsize 100 定義線性表最大長度 定義順序表 typedef struct seqlist 初始化順序表 void initlist seqlist l 建立順序表 intcreatlist seqlist l,int a,int n for ...