本科沒有學習過資料結構,之前也只是泛泛的看看鍊錶的原理,並沒有實際編寫,昨天就系統的將鍊錶的各項功能給實現了下,其中包括:移除,插入,更改,清空,列印,鍊錶反轉等功能;其中,鍊錶的反轉這在《劍指offer》以及其他面試中經常會被問到的問題;同時,對鍊錶的熟悉可以為後期的佇列以及棧等的編寫提供基礎,所以還是很有必要從頭將鍊錶進行弄明白。
首先建立list.h檔案,為了和stl中的list進行區分,所以才用大寫表示:
#ifndef _list_h_
#define _list_h_
#include
#include
using namespace std;
struct info
;struct node;};
class list
;#endif
2、然後建立list.cpp檔案
#include"list.h"
list::list()
list::~list()
}//建立乙個煉表頭
void list::listhead(info val)
//在鍊錶中pos的位置插入資料
void list::insert(info val,int
pos)
while(temp!=null && index
< pos)
if(temp == null)
node->next = temp->next;
temp->next = node;
length++;
}//預設在鍊錶的末尾新增資料
void list::insert(info val)
node->next = temp->next;
temp->next = node;
length++;
}//在鍊錶中查詢val
int list::find(info val)
return -1;
}//刪除val值
void list::remove(info val)
intindex = 2;
node* temp = head;
while(index
temp->next = temp->next->next;
length--;
}//列印鍊錶
void list::print()
while(temp!=null)
}//鍊錶反轉
void list::reverse()
head->next=null;
head=curnode;
}//清空鍊錶
void list::erase()
}
3、最後就是進行test.cpp檔案的編寫進行測試程式!
#include"list.h"
int main(int argc,char** argv)
4、總結
之前都是覺得資料結構特別的難,這次為了提公升自己的演算法能力以及**的coding能力,決定再花點時間將《資料結構和演算法分析》好好學習一下,平時都是直接呼叫stl標準庫中現成的api函式,沒什麼感覺,通過對資料結構的學習,可以讓我們從底層的原理實現進行更深層次的了解!
資料結構之單向鍊錶
結構體 指標 更強大的資料結構 分類 1 頭指標式鍊錶 不實用很麻煩 2 頭結點式鍊錶 常用 節點 typedef int data 常用操作 1建立 2摧毀3增加 4刪除5查詢 6修改7逆序 ifndef linklist h define linklist h typedef enum bool...
資料結構 單向鍊錶的實現
單向鍊錶的實現 記錄 非常菜雞的開始 節點中定義節點時 成員變數要寫struct 因為沒寫報了一堆錯 老師節點裡的node都是變數型別,只有linknode內部是指標型別,內部使用指標,指標大小為4個位元組 可以分配記憶體很方便。注意teacher輸入的時候為位址 各種指標型別的轉換 main函式中...
資料結構 C 實現(二) 單向鍊錶
和陣列不同,鍊錶的資料結構內部多了乙個指標指標下乙個位置,使得在鍊錶中插入刪除特定位置的元素效率很高,實現依舊分為三個部分,抽象類linearlist.h,模板類chain.h以及main函式原始檔。廢話不多說,我們看 這次linearlist.h抽象類裡面多了兩個成員函式乙個是push back ...