記錄乙個單向鍊錶的實現

2021-09-25 11:14:00 字數 2380 閱讀 4355

/**功能模組:資料鏈表

*實現功能:1、單向資料鏈表,遍歷,查詢等都只是支援 從前往後 /

/*節點結構體:value是節點值,占用4個位元組,用處:

*1、當節點只需要存放乙個32位以下資料的時候,就可以使用value,data就可以不需要重新申請記憶體了

*2、記憶體分配的最小單元是16個位元組,用來佔位到16個位元組,這樣就不會出現記憶體浪費,反正已經申請出來了

*/typedef struct _node

node;

typedef node pnode;

typedef struct _mylist

list;

typedef list* plist;

#include 「mylist.h」

#include 「malloc.h」

/**建立乙個鍊錶,並且初始化

*建立失敗返回null

/plist createlist(void)

else return null; }/

*建立乙個節點,並且初始化

*建立失敗返回null

/pnode createnode(void)

return node;}/

*鍊錶的頭指標尾指標均置null

/void initlist(plist list)

/*刪除乙個鍊錶,遍歷鍊錶所有節點,依次釋放記憶體

*刪除鍊錶本身並且釋放記憶體

/ plist deletelist(plist list)

next=node->next;

myfree(node);//釋放節點

node=next;

}list->head=null;

list->end=null;

myfree(list);

return null;}/

*清空乙個鍊錶,遍歷鍊錶所有節點,依次釋放記憶體

/ void clearlist(plist list)

next=node->next;

myfree(node);//釋放節點

node=next;

}list->head=null;

list->end=null;}/

*在指定的位置後面插入乙個節點,失敗返回0,成功返回1

/ uint8_t insertionnodeatlocation(plist list,pnode node,uint32_t loc)

else

else if(loc>=(getlistcount(list)))

else

count++;

inode=inode->next;

}return 0;}}

}/*直接在末尾插入乙個節點,失敗返回0,成功返回1

/ uint8_t insertionnodeatend(plist list,pnode node)

else}/

*移除指定鍊錶,指定位置的節點,節點位置由傳入的節點指標決定,失敗返回0,成功返回1

/ uint8_t removenodebypointer(plist list,pnode node)

else return 0;//找不到}/

*移除指定鍊錶,指定位置的節點,節點位置由loc決定,失敗返回0,成功返回1

/ uint8_t removenodebylocation(plist list,uint32_t loc)

loc-=1;//-1之後,我們應該刪除loc的下乙個節點

uint32_t count=0;

while(node!=null)

count++;

node=node->next;

}return 0;}/

*判斷乙個鍊錶是不是空鍊錶,空的返回1,不為空的返回0,鍊錶本身為空的時候也返回1

/ uint8_t listisempty(const plist list)

/*遍歷指定鍊錶的節點個數

/ uint32_t getlistcount(const plist list)

return count;}/

*輸入乙個節點位置,在指定鍊錶中找到該位置,並且返回該位置的節點指標

*查詢不到返回null,查詢到了返回節點指標

/ pnode getnode(const plist list,uint32_t loc)

return node;}/

*輸入乙個節點指標,在指定的鍊錶中查詢該節點位置

*查詢不到返回-1,查詢到了返回節點位置

*/ int getnodelocation(const plist list,const pnode node)

listnode=listnode->next;

count++;

}return loc;

}

乙個簡單的 單向鍊錶

unitunit1 inte ce uses windows,messages,sysutils,variants,classes,graphics,controls,forms,dialogs,stdctrls type tform1 class tform button1 tbutton but...

乙個簡單的單向鍊錶 C

singlylinkedlist.h include include class node 構造方法,方便快速建立結點 node int data,node next class list 返回鍊錶長度 list 建構函式 list const list temp 拷貝建構函式 list 析構函式 ...

鍊錶(一) 建立乙個最基本的單向鍊錶

1.結點 鍊錶中用來儲存乙個資料的儲存單元。乙個鍊錶至少需要由兩部分組成,就是資料域和指標域,一般形式的結點定義為 struct node typedef struct node elemsn 以上兩步等價於 typedef struct node elemsn 2.使用指標變數p表示結點的成員 p...