單向迴圈線性表:也是通過結點的形式在儲存器中進行儲存,結點包括資料域和指標域,邏輯上相鄰的兩個結點在物理上不一定相鄰,單向迴圈鏈式儲存的線性表,定義了乙個唯一的頭結點,頭結點的資料域是儲存資料的,指標域next指標指向下乙個結點,也就是開始結點,定義了乙個尾結點,尾結點的next指向頭結點,資料域是儲存資料的。
#include #include using namespace std;
typedef int datatype;
struct linknode;
class slist;
原始檔實現部分;
#include "singlelinknode.h"
#include #include using namespace std;
//結構體的建構函式
linknode::linknode(const datatype x)
:_data(x),_next(null)
;slist::slist():_head(null),_tail(null)
slist::slist(const slist &s)//拷貝函式
:_head(null),_tail(null)
slist::~slist()
void slist::uniqe()
left=left->_next;
right=right->_next; }}
void slist::merge(slist &s)
//如果s為空
if (s._head==null)
//當兩個鍊錶都不為空時
linknode *phead=_head;
if (phead->_data<=s._head->_data)
else
linknode *cur=_head;
while(1)
phead=phead->_next;
}else
}} _head=cur;
}void slist::sort()
int slist::amount()
else
}return i;
}void slist::pushback(const datatype& x)else
}void slist::clear()
_head=null;
_tail=null;
}void slist::popback()//尾刪法
else if (_head==_tail)
else }
void slist::popfront()
}//在pos節點後面插入新節點
void slist::insert(linknode *pos,datatype x)
else
}void slist::erase(linknode *pos)
else if (pos==_tail)
else
prev->_next=pos->_next;
delete pos;
pos=null; }}
linknode *slist::find(datatype x)
else
temp=temp->_next;
} return null; }}
void slist::remove(datatype x)
else }
}void slist::removeall(datatype x)
//如果鍊錶不為空,設定left和right前後指標,從頭至尾遍歷一遍,delete節點的data為x的節點
linknode* left = _tail;
linknode* right = _head;
int count = amount();
while (count--)
if (_tail == right)
if (right == left)
linknode* tmp = right;
right = right->_next;
delete tmp;
left->_next = right;
} else
} }
線性表的Java實現 鏈式儲存(單向鍊錶)
單向鍊錶 單鏈表 是鍊錶的一種,其特點是鍊錶的鏈結方向是單向的,對鍊錶的訪問要通過順序讀取從頭部開始。鏈式儲存結構的線性表將採用一組任意的儲存單元存放線性表中的資料元素。由於不需要按順序儲存,鍊錶在插入 刪除資料元素時比順序儲存要快,但是在查詢乙個節點時則要比順序儲存要慢。使用鏈式儲存可以克服順序線...
線性表的Java實現 鏈式儲存(單向鍊錶)
單向鍊錶 單鏈表 是鍊錶的一種,其特點是鍊錶的鏈結方向是單向的,對鍊錶的訪問要通過順序讀取從頭部開始。鏈式儲存結構的線性表將採用一組任意的儲存單元存放線性表中的資料元素。由於不需要按順序儲存,鍊錶在插入 刪除資料元素時比順序儲存要快,但是在查詢乙個節點時則要比順序儲存要慢。使用鏈式儲存可以克服順序線...
線性表的鏈式儲存之迴圈鍊錶
迴圈鍊錶不同於單鏈表的是在迴圈鍊錶中最後乙個結點的指標不為null,而是指向頭結點,從而整個鍊錶形成乙個環。在迴圈單鏈表中,表尾結點 r的next域指向l,故表中沒有指標域為null的結點,因此,迴圈單鏈表的判空條件不是頭結點的指標是否為空,而是它是否等於頭結點。迴圈單鏈表的插入,刪除演算法與單鏈表...