鍊錶(Linked List)

2022-07-31 03:09:14 字數 1585 閱讀 3788

今天上午憑藉昨天晚上自己學習的指標,今天學習了鍊錶,發現還是乙個非常有用的資料結構,從此我知道了學習指標的重要性。

很多人給我說,指標這個東西其實沒有什麼太大的作用,認為鍊錶其實也可以不用指標寫,雖然**篇幅要大一些,但是要好理解一些,但是其實用指標寫利遠遠大於弊,這裡列出一些我認為是優點的東西。

指標變數速度上有一些優勢。

指標陣列可以動態的申請和釋放空間,不需要像普通陣列一樣直接必須申請乙個非常大的空間放在那裡(有點像vector)

這種鍊錶**非常短,好寫容易理解!頂乙個!

下面來上兩個**:

首先,first establish the linked list

#includeusing namespace std;

struct node;

int x;

node *p,*head,*r;

int main()

p=head->next;

while(p->next!=null)

cout}

其次,上面**的基礎上加入了insert,delete操作

#includeusing namespace std;

struct node;

int x;

int len=0;

node *p,*head,*r;

int insertit(int loc,int val)

if(p!=null) }

int deleteit(int loc)

if(p!=null) }

int main()

int n;

cout<>n;

int a,b;

char c;

for(int i=1;i<=n;++i)

if(c=='d')

}p=head->next;

while(p->next!=null)

cout}

雙向鍊錶隨後就到!

下面是雙向鍊錶的**,其實和單向鍊錶的**非常的相似,這裡就不再贅述,內有注釋:

#includeusing namespace std;

struct linked_list;

linked_list *p,*end,*head;

void insertit(int loc,int val)

if(p!=null) }

void deleteit(int loc)

if(p!=null) }

int main()

int nm;

cout<<"please input the number of operations:";

cin>>nm;

int aa,b;

char ch;

for(int i=1;i<=nm;++i)

if(ch=='d')

} p=head->suc;

while(p!=null)

p=end;

coutp=p->pre;

} return 0;

}

LinkedList 鍊錶

線性表是一種簡單的資料結構,其主要特點是元素之間存在 一對一 的關係,除去第乙個元素,每個元素都存在唯一乙個 前驅節點 除去最後乙個元素都存在唯一乙個 後繼節點 簡單的線性表有 陣列 單鏈表 雙向鍊錶 靜態鍊錶等。順序表 陣列 優缺點 陣列不僅邏輯上,物理上位置也相鄰,可隨機訪問,但刪除或插入元素時...

LinkedList 鍊錶

最近複習到鍊錶 linkedlist 一般來說共有大概有兩種實現方式 1.陣列實現 和 2.鏈式實現。我僅使用了直接鏈式實現,如下。其他的實現方式,大家不妨自己嘗試下吧。author ace yom peizhen zhang date 2015 8 17 description 鍊錶實現 ifnd...

鍊錶 LinkedList

原文中singlelinklist的remove方法有問題,因為是 node current firstnode.getnext 所以導致鍊錶的第乙個節點刪不掉。修改如下 public class singlelinklist 刪除某個節點 param element return 刪除成功返回tr...