動態記憶體的相關知識
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;
}
關於刪除元素的過程,刪除元素的過程需要使用兩個指標進行遍歷revious
,nexttail
,previous
表示的是要刪除節點的前面乙個指標,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.結構體...