鍊錶基本操作

2021-08-10 06:54:17 字數 3241 閱讀 5298

動態記憶體的相關知識

int *p=null; //定義指標變數;

p=(int *)malloc(sizeof(int));//申請記憶體空間,並且進行強制型別轉換;

*p=3;//使用指標變數;

typedef

struct list;

typedef

struct listnode *listpointer;

struct listnode

;

鍊錶

頭節點是訪問鍊錶的關鍵,尾節點鍊錶結束的關鍵;

單鏈表的建立,首先應該建立的是結構體資料成員和指標域;

#include

#include

typedef

struct listnode *listpointer;

//通過進行型別重新命名,使用定義指標更加方便;

struct listnode

;

listpointer create_list(int value)

pnode->

data

= value;

pnode->next =

null;

return pnode;

}

關於刪除元素的過程,刪除元素的過程需要使用兩個指標進行遍歷reviousnexttailprevious表示的是要刪除節點的前面乙個指標,nexttail表示的是要刪除的節點;

void list_delete_position(listpointer *head, size_t position)

else

else

i++;}}

}

按照元素進行刪除的過程,包括刪除裡面的重複元素;

void list_delete_value(listpointer *head, int value)

listpointer previous = *head;

listpointer newnext = (*head)->next;

for (; newnext != null;)

//重複元素是尾節點或者是中間節點,這裡的遍歷是可以用來處理相同的重複元素的;

else

if (newnext->data == value)

else

}}

void list_destory(listpointer phead)

listpointer temp;

while (phead != null)

}

整個鍊錶建立使用的完整程式如下;

#include

#include

typedef struct listnode *listpointer;

struct listnode

;listpointer create_list(int value)

pnode->data = value;

pnode->next = null;

return pnode;

}void head_insert(listpointer *phead, int value)

listpointer newhead = (listpointer)malloc(sizeof(listpointer));

newhead->next = *phead;

newhead->data = value;

*phead = newhead;

}void tail_insert(listpointer *phead, int value)

listpointer newtail = (listpointer)malloc(sizeof(listpointer));

listpointer newnext = *phead;

while (newnext->next != null)

newnext = newnext->next;

newtail->data = value;

newtail->next = null;

newnext->next = newtail;

}int list_size(listpointer phead)

int i = 1;

while (phead != null)

return i - 1;

}void insert_position(listpointer *head, size_t position, int value)

listpointer temp = (listpointer)malloc(sizeof(listpointer));

temp->data = value;

if (position == 0)

else

else

i++;}}

}void list_delete_position(listpointer *head, size_t position)

else

else

i++;}}

}void list_delete_value(listpointer *head, int value)

listpointer previous = *head;

listpointer newnext = (*head)->next;

for (; newnext != null;)

else

if (newnext->data == value)

else}}

void list_print(listpointer head)

printf("phead");

for (; head != null; head = head->next)

printf("->%d", head->data);

printf("\n");

}void list_destory(listpointer phead)

listpointer temp;

while (phead != null)

}int main()

鍊錶基本操作

include include string h include typedef struct stust void xj st h 生成單鏈表 l l null void shc st h 輸出鍊錶 printf d n h d void chr st h 按大小插入元素 else h h l v...

鍊錶基本操作

鍊錶就是c中利用結構體,將資料和下乙個結構體的位址封裝在乙個結構體中形成乙個節點,這些節點組合起來就是乙個基礎的鍊錶,根據需要可以擴充套件其中的內容來實現不同的需求。實現乙個鍊錶需要定義節點,建立,初始化,插入,刪除這些基本操作。include stdafx.h include stdlib.h i...

鍊錶基本操作

一 什麼是鍊錶 鍊錶,又稱為線性表的鏈式儲存結構,是一種離散儲存。因為線性表的順序儲存結構在增刪上需要移動大量元素,耗費大量時間。進而出現了通過隨機儲存,指標記錄位址的離散儲存。即,有空,資料就存在 只需記錄其位址即可。大致思路可參考出自 大話資料結構 的下圖。二 鍊錶基本內容 三 基本 1.結構體...