c資料結構 鍊錶基本操作

2021-08-17 17:28:56 字數 2672 閱讀 7257

鍊錶是一種線性結構,和順序表相比,鍊錶能充分利用磁碟上的空間,在對鍊錶進行插入刪除操作時,時間複雜度為o(1),相對於順序表,插入刪除時間複雜度為o(n),但鍊錶需要額外的儲存指標的空間,且鍊錶不能隨機訪問。所以使用鍊錶還是使用順序表需要根據具體的使用場景。當多為查詢操作時使用順序表比較好,當刪除增加操作比較多時,應該使鍊錶。

#include #include #include typedef int datatype;

typedef struct node

node, *pnode;

//不帶頭結點的單鏈表//

// .h

// 鍊錶初始化

void slistinit(pnode* phead);

// 尾插

void slistpushback(pnode* phead, datatype _data);

// 尾刪

void slistpopback(pnode* phead);

// 頭插

void slistpushfront(pnode* phead, datatype _data);

// 頭刪

void slistpopfront(pnode* phead);

// 查詢值為_data的結點,返回該結點在鍊錶中的位置

pnode slistfind(pnode phead, datatype _data);

// 在鍊錶pos位置後插入結點_data

void slistinsert(pnode* phead, pnode pos, datatype _data);

// 刪除鍊錶pos位置上的結點

void slisterase(pnode* phead, pnode pos);

// 銷毀單鏈表

void slistdestroy(pnode* phead);

// 求煉表中結點的個數

int slistsize(pnode phead);

// 將鍊錶中的結點清空

void slistclear(pnode* phead);

// 獲取結點

pnode buyslistnode(datatype _data);

// 獲取鍊錶中的最後乙個結點,返回該結點的位址

pnode slistback(pnode phead);

//顯示

void showslist(pnode head);

主函式呼叫

int main()

//實現

//初始化

void slistinit(pnode* phead)

// 尾插

void slistpushback(pnode* phead, datatype _data)

ptail->_pnext = insertnode;

}// 尾刪

void slistpopback(pnode* phead)

ppretail->_pnext = null;

free(ptail);

ptail = null;

}// 頭插

void slistpushfront(pnode* phead, datatype _data)

// 頭刪

void slistpopfront(pnode* phead)

}// 查詢值為_data的結點,返回該結點在鍊錶中的位置

pnode slistfind(pnode phead, datatype _data)

pcur = pcur->_pnext; }}

// 在鍊錶pos位置後插入結點_data

void slistinsert(pnode* phead, pnode pos, datatype _data)

pcur = pcur->_pnext;

} pcur->_pnext = newnode;

}// 刪除鍊錶pos位置上的結點

void slisterase(pnode* phead, pnode pos)

pprecur = pcur;

pcur = pcur->_pnext; }}

// 銷毀單鏈表

void slistdestroy(pnode* phead)

free(*phead);

*phead = null;

}// 求煉表中結點的個數

int slistsize(pnode phead)

return count;

}//修改頭指標必須傳頭指標的位址。

// 將鍊錶中的結點清空

void slistclear(pnode* phead)

}// 獲取結點

pnode buyslistnode(datatype _data)

// 獲取鍊錶中的最後乙個結點,返回該結點的位址

pnode slistback(pnode phead)

return ptail;

}

執行結果:

qq交流

資料結構 順序表 鍊錶 基本操作

ifndef slist h define slist h include include include typedef int sltdatatype typedef struct slistnode slistnode typedef struct slist slist void slist...

資料結構之鍊錶基本操作

涉及到單鏈表的基本操作有如下 int initlist linklist 初始化乙個單鏈表,具有頭指標,頭結點,頭結點 next null int createlisthead linklist int n 頭插法建立乙個鍊錶,鍊錶長度為n int createlisttail linklist i...

資料結構 鍊錶及其基本操作

鍊錶有查詢 刪除 插入 排序 等等一系列的操作 首先還是要先從定義開始 include include struct kk void hh struct kk he 此函式為刪除鍊錶的記憶體 free he return null 排序 鍊錶可以像陣列一樣也可以對其中的值進行排序 公升序或降序 由於...