#include// 請在下面實現結點類 nodeclass 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;編譯執行環境:dev-c++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;
}
基於C C 語言資料結構之線性表(一)
資料結構學習筆記 資料結構的重要性 資料結構我感覺很重要,不僅僅是考試很重要,而且在以後程式設計師事業上都是尤為重要的,知乎上有評價資料結構是最重要的程式設計基本能力,沒有之一。我感覺這個說法很對,並且大家都知道,資料結構與演算法這種說法常常被大家使用,就是因為資料結構是演算法的基本前提,不懂資料結...
基於C C 語言資料結構之線性表(一)
資料結構的重要性 資料結構我感覺很重要,不僅僅是考試很重要,而且在以後程式設計師事業上都是尤為重要的,知乎上有評價資料結構是最重要的程式設計基本能力,沒有之一。我感覺這個說法很對,並且大家都知道,資料結構與演算法這種說法常常被大家使用,就是因為資料結構是演算法的基本前提,不懂資料結構,演算法肯定學的...
資料結構之線性表(二)
線性表的鏈式儲存結構之單鏈表 1.標頭檔案nodelist.h typedef int elemtype typedef struct node listnode,linklist 單鏈表的建立 void createlisthead linklist l,int n 單鏈表的刪除 int list...