今天上午憑藉昨天晚上自己學習的指標,今天學習了鍊錶,發現還是乙個非常有用的資料結構,從此我知道了學習指標的重要性。
很多人給我說,指標這個東西其實沒有什麼太大的作用,認為鍊錶其實也可以不用指標寫,雖然**篇幅要大一些,但是要好理解一些,但是其實用指標寫利遠遠大於弊,這裡列出一些我認為是優點的東西。
指標變數速度上有一些優勢。
指標陣列可以動態的申請和釋放空間,不需要像普通陣列一樣直接必須申請乙個非常大的空間放在那裡(有點像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...