單鏈表演示圖:
單鏈表結構體:
struct node
datatype _data; //資料
struct node *_next; //指向下乙個節點的指標
};
帶頭結點和尾節點的單鏈表:
多乙個tail指標的好處就是很方便可以找到鍊錶尾部,方便在尾部插入乙個元素什麼的。
下面我們用類來實現單鏈表:
class slist
slist(const slist& s) //拷貝構造
:_head(null)
, _tail(null)
_tail = cur;
} ~slist() //析構函式
_tail = null;
_head = null;
} slist& operator=(slist s) //賦值運算子過載
單鏈表最基本的四個函式:
void slist::pushback(const datatype& d) //尾插
else }
void slist::pushfront(const datatype& d) //頭插
else }
void slist::popback() //尾刪
else
delete _tail;
_tail = cur;
_tail->_next = null; }}
void slist::popfront() //頭刪
else
}
給乙個資料,若找到該節點則返回該節點,沒找到則返回null
node* slist::find(const datatype& d)
return null;
}
給定乙個節點,在該節點後插入乙個新的節點
void slist::insert(node* pos, const datatype& d)
else
}
鍊錶的逆序:此處用三個指標來實現
void slist::reverse()
_head = newhead;
}
鍊錶的排序:採用氣泡排序
void slist::sort()
cur = cur->_next;
} end = cur;
cur = _head;
}}
刪除某個節點(給定乙個資料,刪除資料與之相等的第乙個節點)
void slist::remove(const datatype& d)
cur = cur->_next;
}}
刪除某些節點(給定乙個資料,刪除資料與之相等的每乙個節點)
void slist::removeall(const datatype& d)
cur = cur->_next;
} return;
}
刪除非尾節點
void slist::earsenottail(node *pos)
cur->_next = pos->_next; //讓它的_next指向要刪除節點的_next
delete del;
}
找到中間節點
node* slist::findminnode() //快慢指標問題
return slow;
}
刪除倒數第k個節點
void slist::delknode(int k)
node *p1 = _head;
node *tmp = null;
while (cur->_next ) //讓乙個指向頭結點的指標和cur一起走
node *del = p1;
tmp->_next = p1->_next ;
delete p1;
}
檢測是否帶環
//檢測是否帶環
int slist::checkcycle(const slist& s) //快慢指標問題
fast = fast->_next->_next;
slow = slow->_next;
} return 0;
}
獲取環的入口點
node* slist::getcycleeorynode()
cur = cur->_next;
} return null;
}
判斷是否相交
int slist::checkcross(slist& l1, slist& l2)
} else }
return 0;
}
合併兩個鍊錶
int slist::checkcross(slist& l1, slist& l2)
} else }
return 0;
}
求兩個鍊錶的交點
node* slist::getlinkcross(slist& l1, slist& l2)
} }else
}} return null;
}
求鍊錶長度
int slist::lengthoflist(const slist& s)
以後會有改進版奉上,希望大家多多支援
線性表 單鏈表
define crt secure no deprecate define crt secure cpp overload standard names 1 includeusing namespace std typedef struct node node node headpointer 頭指...
線性表 單鏈表
單鏈表結構與順序儲存結構對比 一 儲存分配方式 1 順序儲存結構用一段連續的儲存單元依次儲存線性表的資料元素 2 單鏈表採用鏈式儲存結構,用一組任意的儲存單元存放線性表的元素 二 時間效能 1 查詢 順序儲存結構o 1 單鏈表o n 2 插入和刪除 順序儲存結構o n 單鏈表找到位置後插入刪除時間o...
線性表 單鏈表
template struct node template class linklist 無參建構函式,建立只有頭結點的空鍊錶 linklist t a int n 有參建構函式,建立有n個元素的單鏈表 linklist 析構函式 int length 求單鏈表的長度 t get int i 按位查...