鍊錶
鍊錶是一種物理儲存單元上非連續、非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。鍊錶由一系列結點(鍊錶中每乙個元素稱為結點)組成,結點可以在執行時動態生成。每個結點包括兩個部分:乙個是儲存資料元素的資料域,另乙個是儲存下乙個結點位址的指標域。 相比於線性表順序結構,鍊錶比較方便插入和刪除操作。
建立頭節點
手動new乙個新的node,將node的next置為null即可。
head = new node(0);head->next = null;
從頭插入乙個新的節點
手動new出乙個新的節點p,使p的next的指向head->next所指向的位址,然後將head->next從新指向p即可。
node * p = new node(int); p->next = head->next; head->next = p;
鍊錶反轉
定義三個臨時節點指向頭結點之後的第1個節點p,第2個節點q和第3個節點m。將p->next置為空,然後將q->next = p,然後將p向後移動乙個節點,即p = q,最後將q向後移動乙個節點,即q = m,最後把m向後移動乙個節點,即m = m->next;依此類推直到m等於null,然後將q->next = p,最後將head->next指向q(即目前第乙個節點疑,也就是原本最後的乙個節點)。
通過三個節點達到從頭開始逐個逆序的目的。反轉**請參考後面的完整**。
//
// list.cpp
// list
//// created by scandy_yuan on 13-1-6.
//#include
using
namespace
std;
class list
~list()
//建立頭結點
void create_list();
//插入函式
void insert(const
int& d);
//在指定位置插入
void insert_pos(const
int& d,const
int& d1);
//刪除指定資料的節點
void erase(const
int& d);
//修改指定資料
void updata(const
int& d,const
int& d1);
//反轉鍊錶函式
void reverse();
//列印
void print();
private:
//節點結構
struct node
};node * head;//頭節點
//清理鍊錶函式
void clear()
}//查詢資料d的上乙個節點位置的函式
//為了方便後面刪除操作
node* find(const
int& d)
return p;
}};//建立頭結點
void list::create_list()
//從頭插入乙個節點
void list::insert(const
int& d)
//列印函式
void list::print()
}//在d位置之前插入d1
void list::insert_pos(const
int& d,const
int& d1)
//刪除
void list::erase(const
int& d)
//修改指定資料
void list::updata(const
int& d,const
int& d1)
//反轉鍊錶
void list::reverse()
//將最後乙個節點逆序
q->next = p;
//將頭從新指向新的的第1個節點(之前的最後乙個節點)
head ->next = q;
}int main(int argc, const
char * argv)
C 單鏈表基本操作分析與實現
鍊錶 鍊錶是一種物理儲存單元上非連續 非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。鍊錶由一系列結點 鍊錶中每乙個元素稱為結點 組成,結點可以在執行時動態生成。每個結點包括兩個部分 乙個是儲存資料元素的資料域,另乙個是儲存下乙個結點位址的指標域。相比於線性表順序結構,鍊錶比較...
單鏈表及基本操作與實現
單鏈表的基本操作及基本實現如下 include stdio.h include stdlib.h typedef int elemtype typedef struct lnodelnode,linklist linklist initlist linklist l 初始化鍊錶 bool listi...
C 實現單鏈表的基本操作
結點類 關鍵處在c語言中用指標來指向下乙個節點,c 是物件導向的,用節點類的乙個屬性 next屬性 來指向下乙個節點物件 public class linknode set private linknodenext public linknodenext set endregion public l...