單鏈表的實現

2021-09-19 17:38:10 字數 3058 閱讀 1927

typedef struct node

node;

node* create(); // 建立單鏈表

int length(node *head); // 計算單鏈表的長度

void print(node *head); // 單鏈表的列印

node* search_node(node* head, int pos); // 單鏈表節點的查詢,從0開始,0返回head節點

bool insert_node(node* head, int pos, int data); // 在第pos個節點之後插入節點

bool delete_node(node* head, int pos); // 刪除第pos個節點

void reverse(node* head); // 單鏈表逆置

node* search_mid(node* head); // 尋找單鏈表的中間節點

void insert_sort(node* head); // 單鏈表的正向排序

bool isloop(node* head, node* start); // 判斷單鏈表是否存在環,start存放環的入口節點

void mergelink(node* head1, node* head2); // 有序單鏈表合併

node* create() // 建立單鏈表

p = (node*)malloc(sizeof(node));

assert(p!=null);

p->data = temp;

if (isfirst)

else

q = p;

} p->next = null;

return head;

}int length(node *head) // 計算單鏈表的長度

return count;

}void print(node *head) // 單鏈表的列印

cout << endl;

}node* search_node(node* head, int pos) // 單鏈表節點的查詢,從0開始,0返回head節點

int count = 0;

node* p = head;

while (p != null)

count++;

p = p->next;

} return null;

}bool insert_node(node* head, int pos, int data) // 在第pos個節點之後插入節點

node* p = search_node(head, pos);

if (p != null) // p是尾節點或者中間節點

return false;

}bool delete_node(node* head, int pos) // 刪除第pos個節點,pos不能為0

node* q = search_node(head, pos-1); // 記錄第pos個節點的前驅pos-1

node* p = q->next; // 記錄第pos個節點

if (p != null) // 刪除節點p

return false;

}void reverse(node* head) // 單鏈表逆置

}node* search_mid(node* head) // 尋找單鏈表的中間節點

i++;

current = current->next;

} return mid;

}void insert_sort(node* head) // 單鏈表的正向排序(公升序)

node* p = head->next->next; // 第二個節點

node* r = null;

head->next->next = null; // 保留第乙個節點,後續的節點使用插入排序

node* pre = head;

node* cur = head->next;

while (p != null)

pre->next = r;

r->next = cur; }}

bool isloop(node* head, node* start) // 判斷單鏈表是否存在環,start存放環的入口節點

node* p = head;

node* q = head;

while (q!=null && q->next!=null && p!=q)

if (p == q)

return false;

}// 依次將第二個鍊錶中的節點插入到第乙個鍊錶中

void mergelink(node* head1, node* head2) // 有序單鏈表合併

node* p = head2->next; // 第二個鍊錶

node* r = head2;

node* pre = head1; // 第乙個鍊錶

node* cur = head1->next;

while (p != null)

pre->next = r;

r->next = cur;

}}

單鏈表的實現

include includetypedef struct node 定義鍊錶 snode snode creat 建立鍊錶的函式 q next null return head int length snode head 測鍊錶的結點數 return i void display snode he...

單鏈表的實現

單鏈表夜市線性表的一種表現形式,乙個表節點由乙個資料空間和乙個指標域組成。指標域記錄下乙個結點的位址。鍊錶在插入,刪除功能中效率高。但是讀取某個結點的時候需要順序讀取。效率不如順序儲存形式。下面是一些鍊錶實現的 鍊錶.cpp 定義控制台應用程式的入口點。include stdafx.h define...

單鏈表的實現

單鏈表是資料結構中重要並且基礎的一環,學習資料結構就需要知道單鏈表有的常用操作。1 單鏈表的頭插式建立 2 單鏈表的尾插式建立 3 單鏈表的長度計算 4 單鏈表的列印輸出 5 單鏈表的釋放操作 6 單鏈表是否為空判斷 7 單鏈表在指定index插入指定元素 8 單鏈表刪除指定index的節點 9 單...