鍊錶是指使用鏈結的方式儲存的線性表,一般乙個單鏈表結點由資料域和指標域兩個域組成如圖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 顯示陣列...