標頭檔案函式
#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...