基於C C 語言資料結構之線性表(二)

2022-08-30 11:18:11 字數 2986 閱讀 6235

#include// 請在下面實現結點類 node

class node

};// 請在下面實現鍊錶類 linkedlist

class linkedlist

~linkedlist()

}};int main()

void insert(node *node, int index) 

head = node;

return;

} if (index == 0)

node *current_node = head;

int count = 0;

while (current_node->next != null && count < index - 1)

if (count == index - 1)

}

void output() 

node* current_node=head;

while(current_node!=null)

cout<

void delete_node(int index)

node* current_node=head;

int count=0;

if(index==0)

while(current_node->next!= null && countnext;

count++;

} if(count==index-1 && current_node->next!=null)

}

void reverse() 

node *next_node, *current_node;

current_node=head->next;

head->next=null;

while(current_node!=null)

}

首先我們來了解 迴圈鍊錶,相比單鏈表,迴圈鍊錶不同的是它將最後乙個結點的指標指向了頭結點,這樣的結構使得鍊錶更加靈活方便。迴圈煉表裡沒有空指標,所以在判斷結束條件時,不再是判斷指標是否為空,而是判斷指標是否等於某固定指標。另外,在單鏈表裡,乙個節點只能訪問到它後面的結點,而在迴圈煉表裡它可以訪問到所有的結點。

接下來我們來學習 雙向鍊錶,雙向鍊錶也叫雙鏈表。單鏈表裡的指標域只記錄了結點的下乙個結點,也就是後繼結點,而雙向鍊錶的指標域還記錄了結點的上乙個結點,也就是前驅結點。有了這樣的結構,我們可以從頭結點遍歷到尾結點,也可以從尾結點遍歷到頭結點了。

單鏈表插入元素操作改寫為

#includeusing std::cin;

class node

};class linkedlist

~linkedlist()

node *current_node = head->next;

head->next=null;

while (current_node != null)

} void insert(node *node, int index)

head = node;

head->next=head;

return;

}if (index == 0)

node *current_node = head->next;

int count = 0;

while (current_node!=head && count < index - 1)

if (count == index - 1)

if(node==head->next)

}};int main()

return 0;

}

#includeusing std::cin;

using std::cout;

using std::endl;

class node

};class linkedlist

~linkedlist()

node *current_node = head->next;

head->next = null;

while (current_node != null)

} void insert(node *node, int index)

head = node;

head->next = head;

return;

}if (index == 0)

node *current_node = head->next;

int count = 0;

while (current_node != head && count < index - 1)

if (count == index - 1)

if (node == head->next)

} // 請在下面實現輸出方法 output_josephus

void output_josephus(int m)

coutdata<

node* delete_node=current_node->next;

current_node->next=current_node->next->next;

delete delete_node;

}cout n >> m;

for (int i = 1; i <= n; i++)

linkedlist.output_josephus(m);

return 0;

}

編譯執行環境:dev-c++

基於C C 語言資料結構之線性表(一)

資料結構學習筆記 資料結構的重要性 資料結構我感覺很重要,不僅僅是考試很重要,而且在以後程式設計師事業上都是尤為重要的,知乎上有評價資料結構是最重要的程式設計基本能力,沒有之一。我感覺這個說法很對,並且大家都知道,資料結構與演算法這種說法常常被大家使用,就是因為資料結構是演算法的基本前提,不懂資料結...

基於C C 語言資料結構之線性表(一)

資料結構的重要性 資料結構我感覺很重要,不僅僅是考試很重要,而且在以後程式設計師事業上都是尤為重要的,知乎上有評價資料結構是最重要的程式設計基本能力,沒有之一。我感覺這個說法很對,並且大家都知道,資料結構與演算法這種說法常常被大家使用,就是因為資料結構是演算法的基本前提,不懂資料結構,演算法肯定學的...

資料結構之線性表(二)

線性表的鏈式儲存結構之單鏈表 1.標頭檔案nodelist.h typedef int elemtype typedef struct node listnode,linklist 單鏈表的建立 void createlisthead linklist l,int n 單鏈表的刪除 int list...