C 實現鍊錶基本操作

2021-08-15 17:41:39 字數 2225 閱讀 6250

前幾天找實習的時候,乙個面試官給我留了乙個題,做乙個鍊錶demo,要求實現建立、插入、刪除等操作。

鍊錶是一種常見的資料結構,它是一種物理儲存單元上非連續、非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。鍊錶由一系列結點(鍊錶中每乙個元素稱為結點)組成,結點可以在執行時動態生成。每個結點包括兩個部分:乙個是儲存資料元素的資料域,另乙個是儲存下乙個結點位址的指標域。

我是用c++**來寫的。首先,定義乙個linklist.h檔案,該檔案定義了鍊錶的結點和鍊錶支援的方法。如下所示:

[cpp]view plain

copy

定義鍊錶結點和方法。

#include 

using

namespace

std;  

struct

info  

;  //鍊錶定義

struct

node  

};  

class

linklist  

;  然後,定義乙個linklist.cpp檔案,是鍊錶方法的實現。如下所示:

[cpp]view plain

copy

鍊錶方法的實現。

#include "stdafx.h"

#include 

#include "linklist.h"

using

namespace

std;  

//建構函式

linklist::linklist()  

//析構函式

linklist::~linklist()  

}  //得到鍊錶長度

intlinklist::length()  

//在鍊錶頭部插入結點

void

linklist::inserthead(info val)  

//插入結點

void

linklist::insert(info val,

intpos)  

intindex = 1;  

node *temp = head;  

node *node = new

node(val);  

if(pos == 0)  

while

(temp!=null && index

if(temp == null)  

node->next = temp->next;  

temp->next = node;  

length++;  

}  //刪除結點

void

linklist::remove(info val)  

if(pos == 1)  

intindex = 2;  

node *temp = head;  

while

(index < pos)  

temp = temp->next;  

temp->next = temp->next->next;  

length--;  

}  //查詢結點位置

intlinklist::find(info val)  

return

-1; 

//不存在返回-1

}  //鍊錶反序

void

linklist::reverse()  

head->next=null;  

head=curnode;  

}  //列印鍊錶

void

linklist::print()  

node *temp = head;  

while

(temp!=null)  

cout<}  

最後,定義乙個main.cpp,用來測試鍊錶功能,如下所示:

[cpp]view plain

copy

// main.cpp : 測試鍊錶功能。

#include "stdafx.h"

#include 

#include 

#include "linklist.h"

using

namespace

std;  

int_tmain(

intargc, _tchar* argv)  

測試結果如下圖:

c 實現單向鍊錶基本操作

最近又開始了資料結構的學習,去年下半年也學過一段時間,沒能堅持下去,希望這次能堅持久一點,把基礎的資料結構都能掌握 這是我最近對單向鍊錶的一些學習情況 我先是聽mooc的浙大資料結構的課程,在頭腦裡建立起資料結構的形象和特徵,這種方法不一定很好,只是目前我對資料結構的一種學習方法 在看完一種資料結構...

鍊錶基本操作實現 c語言

include include typedef int elemtype typedef struct node linklist,linknode 鍊錶初始化 linklist initlinklist head next null printf 鍊錶初始化成功 n return head 頭插法...

鍊錶的基本操作(c 實現)

跟c語言不同點 1.結點建立方法與釋放方法 2.c 類 加入了建構函式和析構函式 3.每個函式有略微改動 c語言版 keep on going never give up author vinegar tree lang c blog date 2020 10 4 19 32 pragma gcc ...