單鏈表的實現(增 刪 查 改功能)

2021-08-13 13:28:50 字數 3373 閱讀 3045

標頭檔案函式

#ifndef __slistnode_h__

#define __slistnode_h__

typedef int datatype;

typedef struct slistnode

slistnode;

slistnode* buyslistnode(datatype x);

void slistprint(slistnode* phead);

void slistdestory(slistnode** pphead);

void slistpushback(slistnode** pphead, datatype x);

void slistpopback(slistnode** pphead);

void slistpushfront(slistnode** pphead, datatype x);

void slistpopfront(slistnode** pphead);

slistnode* slistfind(slistnode* phead, datatype x);

void slistinsest(slistnode** pphead, slistnode* pos, datatype x);

void slisterase(slistnode** pphead, slistnode* pos);

void test1();//頭插

void test2();//頭刪

void test3();//尾插

void test4();//尾刪

void test5();//查詢

void test6();//插入

void test7();//刪除

void test7();//銷毀

#endif//__slistnode_h__

功能函式

#include

#include

#include

#include

#include

"slistnode.h"

slistnode* buyslistnode(datatype x)//申請節點 已測

void slistprint(slistnode* phead)//列印鍊錶 已測

slistnode* prev = phead;

while (prev !=

null)

printf("\n");

}void slistdestory(slistnode** pphead)//銷毀鍊錶 已測

}void slistpushback(slistnode** pphead, datatype x)//尾插 已測

slistnode* prev =

*pphead;

while (prev->_next !=

null)

newnode = buyslistnode(x);

prev->_next = newnode;

}void slistpopback(slistnode** pphead)//尾刪 已測

slistnode* prac =

*pphead;

slistnode* prev =

*pphead;

while (prac->_next !=

null)

prev->_next =

null;

free(prac);

}void slistpushfront(slistnode** pphead, datatype x)//頭插 已測

slistnode* prev = buyslistnode(x);

prev->_next =

*pphead;

*pphead = prev;

}void slistpopfront(slistnode** pphead)//頭刪 已測

slistnode* prev =

*pphead;

*pphead = prev->_next;

free(prev);

}slistnode* slistfind(slistnode* phead, datatype x)//查詢 已測

else

}return prev;

}void slistinsest(slistnode** pphead, slistnode* pos, datatype x)//插入 已測

while (prev->_next != pos)

newnode = buyslistnode(x);

prev->_next = newnode;

newnode->_next = pos;

}void slisterase(slistnode** pphead, slistnode* pos)//刪除 已測

slistnode* prev =

*pphead;

*pphead = prev->_next;

free(prev);

return;

}if (pos->_next ==

null)

slistnode* prac =

*pphead;

slistnode* prev =

*pphead;

while (prac->_next !=

null)

prev->_next =

null;

free(prac);

return;

}slistnode* prev =

*pphead;

while ((*pphead)->_next != pos)

prev->_next = pos->_next;

free(pos);

}

測試用例

#include

#include

#include

#include

"slistnode.h"

void test1()//頭插

void test2()//頭刪

void test3()//尾插

void test4()//尾刪

void test5()//查詢

void test6()//插入

void test7()//刪除

void test8()//銷毀

#include

#include

#include

#include"slistnode.h"

#include

int main()

單鏈表的增刪查改

include includetypedef struct nodenode,linklist int num 查詢給定值的結點,返回結點指標 node findvalue char c,node head return head 查詢給定位置的結點的值 char findindex value n...

單鏈表的增刪查改

本篇部落格主要介紹c資料結構中的單鏈表有關的增刪查改操作,並且介紹列表的快慢指標,鍊錶的逆置和合併等用法,廢話不說直接上 pragma once include include include typedef int datetype typedef struct plistnode plistno...

單鏈表的增刪查改

鍊錶是一種物理儲存單元上非連續 非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。鍊錶由一系列結點 鍊錶中每乙個元素稱為結點 組成,結點可以在執行時動態生成。每個結點包括兩個部分 資料域和指標域 特點 1 可以方便的進行擴充。2 可以方便的刪除和插入。例子如下 include i...