#include
#include
#define ok 0
#define error -1
#define malloc_error -2
typedef int elementtype;
typedef struct node
node;
typedef node *pnode; // 重新命名結點指標型別
// 頭插法建立鍊錶
//int create_list_head(struct node ** head, elementtype data)
int create_list_head(pnode *h, elementtype data)
// 將新資料賦給新結點
p->data = data;
p->next = *h;
*h = p;
}// 尾插法建立鍊錶
int create_list_tail(pnode *h, elementtype data)
node->data = data;
node->next = null;
// 將node加入到鍊錶最後,此處要考慮是否非空表
if (*h == null) // 空表
else // 非空表
temp->next = node;
}return ok;
}// 在第 pos 個結點處插入乙個資料
int insert_node(pnode *h, int pos, elementtype data)
// 非空表
if (temp == null && *h != null)
// 新建結點
pnode node = (pnode)malloc(sizeof(node)/sizeof(char));
if (node == null)
node->data = data;
// 將結點插入到鍊錶中
if (*h == null || pos == 1) // 插在表前
else // 插在表中或末尾
return ok;
}// 將第 pos 個結點刪除
int delete_node(pnode *h, int pos)
pnode p = *h;
int k = 1;
while (p && k < pos-1)
if (p == null || k > pos-1)
pnode temp = p;
if (pos == 1)
else
free(temp);
temp = null;
return ok;
}// 鍊錶逆序
int inverse_list(pnode *h)
pnode pre = *h; // 當前結點的前乙個結點:初始化為指向第乙個結點的指標
pnode cur = pre->next; // 當前結點:初始化為指向第二個結點的指標
pnode temp = null; // 用於儲存當前結點的下乙個結點指標
// 將各個結點逆序
while (cur)
// 處理頭指標和尾結點
(*h)->next = null; // 原來的第乙個結點現在是最後乙個結點 要將其指標置空
*h = pre; // 頭指標指向現在的第乙個結點也就是原來的最後乙個結點
return ok;
}// 查詢鍊錶中的元素,找到後返回改結點的指標
pnode search(pnode h, elementtype data)
pnode temp = h;
while(temp)
temp = temp->next;
}return null;
}// 計算鍊錶的長度
int listlen(pnode h)
return len;
}// 列印
void display(pnode head)
pnode temp = head;
while (temp)
printf ("\n");
}int main()
*/// 尾插法建立鍊錶
if (create_list_tail(&head, i) != ok) }
display(head);
// 在第 pos 個結點處插入乙個資料
if(insert_node(&head, 5, 11) != ok)
display(head);
// 將第 pos 個結點刪除
if(delete_node(&head, 5) != ok)
display(head);
// 將鍊錶逆序
if(inverse_list(&head) != ok)
display(head);
// 查詢鍊錶中的元素,找到後返回改結點的指標
pnode p = search(head, 18);
if (p == null)
else
// 計算鍊錶的長度
int len = listlen(head);
printf ("len = %d\n", len);
return 0;
}
資料結構 鍊錶
鍊錶 what 就是一張鏈式儲存的表,是一種資料結構,是基礎,所以還是不要想有什麼用。具體呢?在c中就用結構體實現物件描述,然後通過函式來實現各個基本操作 c 則用類來表述,c中的結構體就可以看成c 中的類,然後通過類封裝各個操作步驟。這些操作實現後就需要 來測試,號稱demo,就是main函式裡面...
資料結構 鍊錶
鍊錶中的資料是以節點來表示的,每個結點的構成 元素 資料元素的映象 指標 指示後繼元素儲存位置 元素就是儲存資料的儲存單元,指標就是連線每個結點的位址資料。鍊錶的結點結構 data next data域 存放結點值的資料域 next域 存放結點的直接後繼的位址 位置 的指標域 鏈域 以 結點的序列 ...
資料結構 鍊錶
一般的建立線性鍊錶有兩種 1.正序法 需要三個指標,head作為頭指標,pre作為前乙個指標,cur作為當前指標用來建立空間 2.倒序法,利用指標的插入,只需要兩個指標,不斷的往頭指標後插入新空間,不過插入的越早,離頭指標越遠,也就越後面輸出 1.線性鍊錶的建立及查詢刪除 include inclu...