c 基礎值鍊錶基本操作

2021-07-29 18:37:09 字數 2989 閱讀 3937

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 列印單向鍊錶 ...