資料結構之單向鍊錶的實現 C

2021-08-09 14:51:11 字數 1665 閱讀 6400

本科沒有學習過資料結構,之前也只是泛泛的看看鍊錶的原理,並沒有實際編寫,昨天就系統的將鍊錶的各項功能給實現了下,其中包括:移除,插入,更改,清空,列印,鍊錶反轉等功能;其中,鍊錶的反轉這在《劍指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 ...