C 實現單鏈表的基本功能

2021-10-16 22:36:15 字數 2539 閱讀 7230

鍊錶是指使用鏈結的方式儲存的線性表,一般乙個單鏈表結點由資料域和指標域兩個域組成如圖1所示,其中資料域data存放該結點的資料域的值,指標域next存放該結點的後繼結點的位址資訊。

2、單鏈表的標頭檔案

#pragma once

#include

#include

struct stunode//代表學生的節點

;typedef

struct stunode stunode;

class

sllist

//判斷鍊錶是否為空

intlength()

const

//返回鍊錶長度

intfind

(stunode &item)

const

;//根據學生的學號查詢學生

void

display()

;//列印出煉表中所有的學生資訊

void

delete

(stunode &item)

;//刪除鍊錶

void

insert

(const stunode &item)

;//插入鍊錶

};

3、單鏈表的.ccp檔案

#include

#include

"sllist.h"

#include

using

namespace std;

sllist::

sllist()

sllist::

~sllist()

}int sllist::

find

( stunode & item)

const

temp = temp-

>next;

} cout <<

"沒有該學生"

<< endl;

return-1

;}void sllist::

display()

}void sllist::

insert

(const stunode &item)

else

//尾節點插入資料

stunode *node =

new stunode;

strcpy

(node-

>name, item.name)

; node-

>id = item.id;

temp-

>next = node;

node-

>next =

null

;this

->length++

;return;}

cout <<

"插入資料出錯"

<< endl;

}void sllist::

delete

(stunode & item)

//根據學號刪除鍊錶中的資訊

else

if(ret ==0)

//頭節點刪除

else

if(ret >

0&& ret <

this

->length)

//中間刪除

stunode *stemp = temp-

>next;

//與上面的刪除同理

temp-

>next = stemp-

>next;

delete stemp;

this

->length--

;return;}

else

stunode *ptem = temp-

>next;

//儲存住尾節點的位址

temp-

>next =

null

;delete ptem;

this

->length--

;return;}

cout <<

"刪除出錯"

<< endl;

}

4、測試程式

#include

"sllist.h"

#include

using

namespace std;

intmain()

5、測試的效果如圖2所示

6、總結

剛開始寫單鏈表的時候給頭結點this->head=null初始化後,沒有建立乙個新結點,而是直接拿來用,程式一直執行不正確、之後在除錯後才發現沒有給頭結點分配位址,這個錯誤浪費了好長時間,對於新手來說使用鍊錶時要記得對頭結點分配位址如下步驟

if

(this

->head ==

null

)/*頭節點插入資料*/

單鏈表的基本功能 C語言

整個工程所要可能會用到的標頭檔案 common.h ifndef common h define common h include include include include include define datatype int endif textmain.c define crt secu...

資料結構 單鏈表基本功能實現

總結 實驗目的 掌握單鏈表的儲存結構形式及其描述 掌握單鏈表的建立 查詢 插入和刪除操作 實驗內容 編寫函式,實現隨機產生或鍵盤輸入一組元素,建立乙個帶頭結點的單鏈表 無序 編寫函式,實現遍歷單鏈表。編寫函式,在非遞減有序單鏈表中插入乙個元素使鍊錶仍然有序。編寫函式,實現在非遞減有序鍊錶中刪除值為x...

C實現陣列的基本功能

實現了陣列的基本操作 插入,刪除,逆序,排序等 不足之處,只能在初始化的時候確定陣列的大小,陣列滿時不能動態擴充容量 以後改進 排序演算法可用其它代替冒泡。include include include include 定義陣列型別 定義資料結構體 typedef struct array 顯示陣列...