單鏈表 SList 實現 有詳細注釋

2021-10-18 22:48:15 字數 2393 閱讀 1609

三個檔案

#pragma once

#include

#include

typedef

int slistdatatype;

typedef

struct slistnode

slistnode;

//尾部插入

void

slistpushback

(slistnode*

* pphead, slistdatatype x)

;//尾部刪除

void

slistpopback

(slistnode*

* pphead)

;//頭部插入

void

slistpushfront

(slistnode*

* pphead, slistdatatype x)

;//頭部刪除

void

slistpopfront

(slistnode*

* pphead, slistdatatype x)

;//單鏈表列印

void

slistprint

(slistnode* phead)

;//創造乙個新節點

slistnode*

buyslistnode

(slistdatatype x)

;//查詢陣列中x的位置

slistnode*

slistfind

(slistnode* phead, slistdatatype x)

;//因為單鏈表一般不會在指定位置的前面乙個元素上插入元素,所以一般是在pos的後面乙個元素插入元素

//任意位置插入元素

void

slistinsertafter

(slistnode* pos, slistdatatype x)

;//任意位置刪除元素

void

slisteraseafter

(slistnode* pos)

;

#define _crt_secure_no_warnings 1

#include

"slist.h"

//尾部插入

void

slistpushback

(slistnode*

* pphead, slistdatatype x)

else

tail->next = newnode;}}

//尾部刪除

void

slistpopback

(slistnode*

* pphead)

//2.有乙個結點

elseif(

null==(

*pphead)

->next)

//3.有乙個以上的結點

else

free

(tail)

; tail->next =

null

; prev->next =

null;}

}//頭部插入

void

slistpushfront

(slistnode*

* pphead, slistdatatype x)

//頭部刪除

void

slistpopfront

(slistnode*

* pphead)

else

}//單鏈表列印

void

slistprint

(slistnode* phead)

printf

("\n");

}//創造乙個新節點

slistnode*

buyslistnode

(slistdatatype x)

newnode->data = x;

newnode->next =

null

;return newnode;

}//查詢陣列中x的位置

slistnode*

slistfind

(slistnode* phead, slistdatatype x)

cur = cur->next;

}return

null;}

//任意位置插入元素

void

slistinsertafter

(slistnode* pos, slistdatatype x)

//任意位置刪除元素

void

slisteraseafter

(slistnode* pos)

else

}

1 單鏈表 c實現 詳細注釋

include include include 建立單鏈表的成員 其實就是結點 link p p就是乙個結點 typedef struct link link link 為這個結構體的別名 初始化鍊錶 link initlink return p 鍊錶的基本操作 對鍊錶進行插入 link inser...

大頂堆的實現 有詳細注釋

堆排序的實現 c語言 heap sort 交換陣列中的兩個元素 void swap int arr,int idx1,int idx2 堆化,根據定義調整為大頂堆 void max heapify int arr,int index,int num 如果有右節點,且右節點值更大,則更新最大值索引 i...

STL系列之八 slist單鏈表

微軟的vs208所使用的pj stl 注1 中的list是雙鏈表,但在某些場合,乙個輕量級的單鏈表會更加合適。單鏈表非常常見,這裡就不去細說了,本文的slist single linked list 單鏈表實現了鍊錶的基本功能,如有需要,以後還會擴充的。slist單鏈表 帶頭結點 的示意圖如下所示 ...