seqlistd.c
#include
"seqlistd.h"
void initlist(pnode* phead)
node *buynode(datatype data)
void pushback(pnode* phead, datatype data)
ptailnode->_pnext=buynode(data);
}}void printlist(pnode phead)
printf("null\n");
}void popback(pnode* phead)
else
if(null
==ptailnode->_pnext)//只有乙個結點
else
//有好多個結點
free(ptailnode->_pnext);
ptailnode->_pnext=
null;
}}void pushfront(pnode* phead, datatype data)
else
}void popfront(pnode* phead)
else
if(null
==pdelnode->_pnext)
else
}node* find(pnode phead, datatype data)
pcurnode=pcurnode->_pnext;
}return
null;
}void insert(pnode pos, datatype data)
if(null
==pnewnode)
return;
pnewnode->_pnext=pos->_pnext;
pos->_pnext=pnewnode;
}void erase(pnode* phead, pnode pos)
else
if(*phead==pos)
else
pnewnode->_pnext=pos->_pnext;
free(pos);
}}void printfromtail2head(pnode phead)
}void deletenottailnode(pnode pos)
void remove(pnode* phead, datatype data)
else
}void removeall(pnode* phead, datatype data)
else
}}size_t size(pnode phead)
printf("%d\n",count);
}int empty(pnode phead)
else
}pnode back(pnode phead)
return pcurnode;
}pnode front(pnode phead)
void text1()
else
printf("%x\n",back(node));
printf("%x\n",front(node));
}int main()
seqlistd.h
#include
#include
#include
typedef int datatype;
#define
null
0typedef struct node
node, *pnode;
//// 初始化單鏈表
void initlist(pnode* phead);
// 在單鏈表的尾部插入乙個節點
void pushback(pnode* phead, datatype data);
// 刪除單鏈表的最後乙個節點
void popback(pnode* phead);
// 在單鏈表的頭部插入值為data的結點
void pushfront(pnode* phead, datatype data);
// 刪除單鏈表的第乙個結點
void popfront(pnode* phead);
// 在單鏈表中查詢值為data的結點,找到了返回該結點的位址,否則返回null
node* find(pnode phead, datatype data);
// 在單鏈表pos位置後插入值為data的結點
void insert(pnode pos, datatype data);
// 在單鏈表中刪除位置為pos的結點
void erase(pnode* phead, pnode pos);
// 移除單鏈表中第乙個值為data的結點
void remove(pnode* phead, datatype data);
// 移除單鏈表中所有值為data的結點
void removeall(pnode* phead, datatype data);
// 獲取單鏈表總結點的總個數
size_t size(pnode phead);
// 判斷結點是否為空
int empty(pnode phead);
// 返回單鏈表的最後乙個結點的位置
pnode back(pnode phead);
// 返回單鏈表的第乙個結點的位置
pnode front(pnode phead);
// 構建乙個新節點
node* buynode(datatype data);
// 正向列印單鏈表
void printlist(pnode phead);
///面試題//
// 逆序列印單鏈表
void printfromtail2head(pnode phead);
// 刪除單鏈表的非尾結點(不能遍歷單鏈表)
void deletenottailnode(pnode pos);
C 鍊錶基本操作
includeusing namespace std struct node typedef node mylist void createlist mylist head,int n 1 mylist copylist mylist l 2 void insertelem mylist head,...
C 實現鍊錶基本操作
前幾天找實習的時候,乙個面試官給我留了乙個題,做乙個鍊錶demo,要求實現建立 插入 刪除等操作。鍊錶是一種常見的資料結構,它是一種物理儲存單元上非連續 非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。鍊錶由一系列結點 鍊錶中每乙個元素稱為結點 組成,結點可以在執行時動態生成。...
C 鍊錶的基本操作
鍊錶相對於陣列 插入和刪除的效率高 查詢效率低 儲存額外的節點指標,帶來空間上的消耗 include using namespace std 定義鍊錶的資料結構 struct listnode 建立單向鍊錶 listnode list create return phead next 列印單向鍊錶 ...