Khái niệm danh sách link đơn đóng vai trò đặc biệt quan trọng trong các thao tác làm việc lập trình. Ứng dụng nó đưa về là cực kì lớn. Chính vì như vậy bạn phát âm nếu muốn khám phá ngành này thì ko thể vứt qua những kiến thức về danh sách liên kết đơn. Nội dung bài viết sau tự Teky sẽ giúp đỡ bạn đọc tìm hiểu thêm thông tin về chủ thể này như định nghĩa, điểm sáng và cách setup danh sách links đơn.

Bạn đang xem: Nên dùng danh sách liên kết nào


Đặc điểm của danh sách link đơn
Cách thiết lập danh sách link đơn
Thêm thành phần vào danh sách link đơn
Xóa bộ phận khỏi danh sách link đơn
Học lập trình, công nghệ tại Teky – thông tin cần biết

Tìm gọi về list liên kết

Trước khi tò mò về danh sách liên kết đơn, ta sẽ bắt đầu với danh sách link trước. Để mang lại dễ hình dung, chúng ta có thể hiểu danh sách link trong C có công dụng khá kiểu như với một mảng. Mặc dù vẫn gồm có điểm khác hoàn toàn nhất định. Biện pháp phân biệt danh sách liên kết và mảng như sau:

Nội dungMảngDanh sách liên kết
Kích thước

(Danh sách liên kết chiếm ưu thế)

Kích thước được cố định mọi lúc
Trong lúc khai báo đề xuất chỉ rõ kích thước
Kích thước chuyển đổi liên tục trong quá trình thêm, bớt phân tử.Kích thước buổi tối đa chỉ nhờ vào vào bộ nhớ
Cấp phát bộ nhớ

(Danh sách liên kết chiếm ưu thế)

Tĩnh: bộ nhớ lưu trữ được cung cấp theo chế độ trong quá trình biên dịch.Động: bộ nhớ được cấp cho theo cơ chế trong quá trình khởi chạy.
Thứ từ và biện pháp sắp xếp

(Danh sách liên kết chiếm ưu thế)

Được gìn giữ trên một dãy các ô nhớ lập tức kềĐược lưu lại trên các ô ghi nhớ bất kỳ
Truy cập

(Mảng chỉ chiếm ưu thế)

Bằng cách sử dụng chỉ số mảng, chất nhận được truy cập đến 1 phần tử ngẫu nhiên: O(1)Muốn truy vấn đến thành phần ngẫu nhiên cần phải trải qua quy trình duyệt từ đầu đến cuối bộ phận đó: O(n)
Tìm kiếm

(Mảng chỉ chiếm ưu thế)

Có thể tra cứu kiếm bằng 2 ngôn từ tuyến tính và nhị phânChỉ có thể tìm kiếm bằng tuyến tính
Danh sách links đơn (Single linked list) là một trong 3 phân các loại của danh sách liên kết C++.

*

Danh sách link đơn là gì?

Danh sách link đơn còn được gọi là Single Linked List. Nó được dùng để làm chỉ một cấu trúc dữ liệu di động hay còn rất có thể hình dung như một danh sách mà trong số đó mỗi phần tử đều links với thành phần đứng sau nó.

*
Mô hình danh sách link đơn

Single Linked danh mục được dùng thịnh hành với ngôn từ lập trình C++. Trong Linked các mục C++, mỗi phần tử được kết cấu nên từ nhì thành phần chính. Đó là thành phần tài liệu và yếu tố liên kết. Nguyên tố dữ liệu chịu trách nhiệm lưu trữ thông tin về phiên bản thân bộ phận đó. Còn yếu tắc liên kết để giúp đỡ lưu showroom của phần tử đứng sau phần tử chủ thể đó. Nếu bộ phận được xét vẫn đứng cuối danh sách thì thành phần link sẽ bằng NULL. Một phần tử hoàn chỉnh được cấu thành từ data (dữ liệu) và pointer (liên kết) sẽ được gọi là 1 trong những node (hay còn gọi là nút).

DB như vậy nào? Ưu điểm yếu khi sử dụng

Đặc điểm của danh sách link đơn

Tính cấp phát dữ liệu động

Trong lúc chạy chương trình, Single link list C++ sẽ được cấp phép bộ nhớ. Các bộ phận được tàng trữ một cách thiên nhiên trong RAM. Lúc thêm hoặc giảm phần tử, form size của danh sách cũng biến thành thay đổi. Kích cỡ tối đa của Single linked list trong c++ dựa vào vào bộ lưu trữ khả dụng của RAM.

Tính link của bộ phận đầu và bộ phận đứng sau

Vì tất cả sự links giữa hai phần đứng trước lép vế nên chỉ việc nắm được thông tin của bộ phận đầu tiên và bộ phận cuối thuộc là bạn dùng có thể dễ dàng quản lý được cả danh sách. Tuy nhiên nếu muốn truy vấn đến một vị trí bất kỳ thì phải tiến hành duyệt từ trên đầu đến bộ phận đó. Kế bên ra, vào danh sách link đơn C++ cũng chỉ chất nhận được người dùng tìm kiếm đường tính độc nhất vô nhị 1 phân tử.

Cách setup danh sách link đơn

Tạo node

Một list được tạo lên từ không ít node. Do vậy ta vẫn đi từ cách tạo node trước. Như sẽ nói sinh sống trên, một node bao hàm 2 phần là thành phần link và yếu tắc dữ liệu. Đối với nhân tố dữ liệu, bạn cũng có thể tự chế tạo lên dữ liệu theo nhu cầu (class) hoặc sử dụng tài liệu có sẵn (struct). Còn phần link thì tất nhiên sẽ là con trỏ. Con trỏ này trỏ từ node trước đến node gần cạnh phía sau.

Với phần ví dụ chế tác node này, ta sẽ thực hiện int mang đến phần dữ liệu như sau:

struct Node

int data;

Node* next;

;

Để tạo thêm 1 node mới, ta sẽ tiến hành khởi tạo ra giá trị ban sơ và trả add về mang lại node được cấp cho phát.

Node* Create
Node(int init_data)

{

Node* node = new Node;

node->data = init_data;

node->next = NULL;

Node vừa được tạo chưa thêm vào danh sách nên chưa liên kết với thành phần nào cả. Cho nên nên phần liên kết gán bằng NULL.

Code danh sách link đơn C++

*
Thêm một node vào giữa danh sách link đơn

Khi đã tất cả sẵn đa số node rồi, ta sẽ triển khai tạo lập 1 danh sách trong C++. Bởi đặc tính của node là liên kết với nhau cần ta chỉ việc nắm được tin tức của node đầu (head) với nốt cuối (tail) là gồm thể làm chủ được danh sách.

struct Linked
List

Node* head;

Node* tail;

;

Khi hàm tạo list mới được hình thành, chúng vẫn không có phần tử nào cả. Chính vì như thế ta đang gắn phần đầu cùng cuối tạm thời vào NULL.

void Create
List(Linked
List& l)

l.head = NULL;

l.tail = NULL;

*

Thêm bộ phận vào danh sách liên kết đơn

Thêm bộ phận đầu

Đầu tiên ta cần xác minh xem danh sách link đơn này còn có rỗng hay không. Nếu danh sách đó rỗng, ta gán luôn luôn head vào node bắt buộc thêm. Nếu list không rỗng, ta trỏ link từ head vào node mới. Tiếp đến mới gán lại head vào node này.

void Add
Head(Linked
List& l, Node* node)

if (l.head == NULL)

l.head = node;

l.tail = node;

else

node->next = l.head;

l.head = node;

Thêm thành phần đuôi
*
Thêm một node vào đuôi danh sách

Tương trường đoản cú như cách thêm bộ phận đầu, ta cũng trở nên xác định coi danh sách này còn có rỗng giỏi không. Nếu rỗng thì mang đến node new làm tail luôn. Nếu không rỗng thì trỏ tail sẵn tất cả đến node này rồi gán lại tail vào node mới được trỏ.

void Add
Tail(Linked
List& l, Node* node)

if (l.head == NULL)

l.head = node;

l.tail = node;

else

l.tail->next = node;

l.tail = node;

Thêm vào điểm bất kỳ

Gọi p. Là node buộc phải thêm, còn q là node đằng trước vị trí yêu cầu thêm. Đầu tiên, ta sẽ kiểm tra xem node q tất cả gán với NULL hay không. Nếu gồm gán tức là danh sách rỗng. Lúc đó chỉ cần gán p. Lên đầu là được. Ví như không, người dùng sẽ thực hiện theo các bước sau: trỏ p->next = q->next, tiếp nối q->next = p. Khi hoàn thành, yêu cầu kiểm tra tiếp q gồm phải nốt cuối tuyệt không. Nếu buộc phải thì cần liên tục gán phường vài tail.

void Insert
After
Q(Linked
List& l, Node* p, Node* q)

{

if (q != NULL)

{

p->next = q->next;

q->next = p;

Xóa phần tử khỏi danh sách links đơn

Xóa sống đầu

Đầu tiên, ta thực hiện kiểm tra xem danh sách đó bao gồm rỗng không. Nếu gồm thì thẳng xóa đi với để giá trị bằng 0 là được. Còn nếu danh sách không trống rỗng thì triển khai theo những cách sau. Đầu tiên là gán lại head vào địa điểm đằng sau bộ phận cần xóa, nhớ yêu cầu lưu head lại. Tiếp nối mới tiến hành xóa.

int Remove
Head(Linked
List& l, int& x)

if (l.head != NULL)

Node* node = l.head;

x = node->data; // Lưu quý hiếm của node head lại

l.head = node->next;

delete node; // diệt node head đi

if (l.head == NULL)

l.tail = NULL;

return 1;

return 0;

Xóa ngơi nghỉ điểm bất kỳ
*
Cách xóa một node

Nếu đề xuất xóa node p sau một node q bất kỳ, ta sẽ sở hữu 3 trường hợp cần xét:

Nếu q là NULL suy ra list rỗng, không phải xóa mà chỉ cần chỉnh về 0Nếu next của q là NULL, chứng minh p là NULL, suy ra phường không tồn tại để xóa
Nếu p có tồn tại, kiểm tra xem phường có phải tail không, nếu tất cả thì chỉ cần gán tail lại vào q là được.

int Remove
After
Q(Linked
List& l, Node* q, int& x)

if (q != NULL)

Node* p = q->next;

if (p != NULL)

if (l.tail == p)

l.tail = q;

q->next = p->next;

x = p->data;

delete p;

return 1;

return 0;

return 0;

*

Duyệt danh sách links đơn và in

Để khám nghiệm xem danh sách đã hoàn hảo hay chưa, ta đang gán một node bởi head. Tiếp nối kiểm tra xem node đó NULL tốt không. Nếu vẫn đạt có nghĩa là ta vẫn có tài liệu của node này. Liên tiếp thực hiện thao tác đó cho đến node NULL, đó thiết yếu tail của danh sách.

Vậy trong nội dung bài viết vừa rồi, Teky đã giúp bạn xem thêm về các điểm lưu ý của danh sách link đơn cũng tương tự cách tạo một danh sách hoàn chỉnh. Hy vọng rằng những kỹ năng này sẽ giúp ích cho quá trình học tập và làm việc của bạn.

Học lập trình, công nghệ tại Teky – thông tin cần biết

TEKY là học viện sáng tạo công nghệ cùng với chương trình đào tạo STEAM (Science – technology – Engineering – Art – Mathematics) theo chuẩn chỉnh Mỹ đầu tiên tại Việt Nam dành cho trẻ em trường đoản cú 4 mang đến 18 tuổi.

Được thành lập vào thời điểm tháng 6 năm 2016, TEKY quyết tâm thực hiện sứ mệnh mang lại cho vắt hệ trẻ nước ta kiến thức trọn vẹn về STEAM, nhất là các bốn duy công nghệ, khoa học laptop và tài năng thế kỷ 21 – 4Cs (Critical Thinking: tứ duy phản nghịch biện – Communication: giao tiếp – Creativity: sáng tạo – Collaboration: thao tác làm việc nhóm).

*
Trải nghiệm học tập lập trình miễn phí
Đây là chương trình không chỉ là trang bị kiến thức lập trình hơn nữa rèn luyện nhóm khả năng 4Cs. Trẻ sẽ được: Học tư duy phản bội biện trải qua việc phân tích những vấn đề. Học tính trí tuệ sáng tạo tư duy Logic thông qua việc lắp đặt và lập trình sẵn robot th ông qua các quy mô Lego Mindstorm, tiện ích trò chơi. Giúp nhỏ học xuất sắc môn Toán trên lớp Kỹ năng thích hợp tác trải qua các trò chơi team-building, những dự án team trên lớp. Phát huy kĩ năng giao tiếp công dụng bằng nhiều bài tập và vận động hấp dẫn.

Các bộ môn đào tạo tại Teky gồm: lập trình sẵn và trở nên tân tiến ứng dụng, xây dựng game, lập trình web cùng với python  Lập trình Scratch Robotics Engineering, technology 3D và Multi
Media. Chúng tôi tin rằng trẻ con em vn có thời cơ phát triển mạnh khỏe trong một nền tài chính số và cần được trang bị chuẩn bị sẵn sàng để biến những doanh nhân technology trong tương lai.

Liên hệ ngay học viện công nghệ sáng chế tạo TEKY nhằm được tư vấn khóa học:

Cam kêt 7 tuổi rất có thể lập trình
Top 10 dự án giáo dục tất cả tầm ảnh hưởng nhất Đông nam giới Á 2017 & 2018Top 3 dự án xuất nhan sắc nhất, Next
Gen – Thụy Sĩ Hotline Hà Nội: 024-7109-6668 | 0975-241-015 Hotline hồ Chí Minh: 028-7109 9948 | 097-900-8642

Danh sách liên kết vòng là gì?

Danh sách links vòng là một trong những chuỗi những nút được bố trí sao cho từng nút có thể được truy tìm nguyên về bao gồm nó. Ở đây, “nút” là một phần tử từ bỏ tham chiếu với những con trỏ cho tới một hoặc nhì nút sinh hoạt vùng cạnh bên của nó.

Dưới đây là mô tả về danh sách links vòng với 3 nút.

*

Ở đây, chúng ta cũng có thể thấy rằng từng nút đều hoàn toàn có thể truy xuất được bao gồm nó. Ví dụ hiển thị làm việc trên là 1 trong những danh sách links đơn tròn.

Lưu ý: Danh sách liên kết vòng đơn giản dễ dàng nhất là 1 trong những nút chỉ theo dõi chủ yếu nó như được hiển thị

*


Mục lục:

Cơ bản Operacác mục trong danh sách link vòng

Cơ bạn dạng operacác mục vào danh sách link vòng là:

chèn
Xóa và
Travesal
Chèn là quá trình đặt một nút vào một trong những vị trí khẳng định trong danh sách liên kết vòng.Xóa là thừa trình loại bỏ một nút hiện có khỏi list liên kết. Nút rất có thể được xác định bằng sự lộ diện của giá trị hoặc địa điểm của nó.Traversal của danh sách link vòng là quá trình hiển thị cục bộ nội dung của danh sách liên kết và truy trái lại nút nguồn.

Trong phần tiếp theo, các bạn sẽ hiểu phương pháp chèn một nút và những kiểu chèn hoàn toàn có thể có vào Danh sách links đơn vòng.

chèn Operasản xuất

Ban đầu, bạn phải tạo một nút trỏ đến thiết yếu nó như vào hình này. Nếu không tồn tại nút này, làm việc chèn sẽ tạo nên nút đầu tiên.

*

Tiếp theo, bao gồm hai khả năng:

Chèn vào vị trí hiện tại của danh sách liên kết vòng. Điều này tương ứng với bài toán chèn vào đầu phần cuối của danh sách link số không nhiều thông thường. Vào danh sách liên kết vòng, phần đầu và phần cuối như là nhau.Chèn sau một nút được lập chỉ mục. Nút đề nghị được xác định bằng số chỉ mục tương ứng với giá trị bộ phận của nó.

Xem thêm: Thực trạng đánh giá chính sách công ở việt nam, đánh giá chính sách công: một số vấn đề lý luận

Để chèn vào đầu/cuối danh sách link vòng, tức là tại địa điểm nút đầu tiên được thêm vào,

Bạn sẽ buộc phải ngắt link tự hiện có với nút hiện tại có
Con trỏ tiếp theo sau của nút new sẽ link đến nút hiện tại có.Con trỏ tiếp theo sau của nút sau cùng sẽ trỏ đến nút được chèn.

LƯU Ý: con trỏ là mã thông tin chính hoặc điểm bắt đầu/kết thúc của vòng tròn rất có thể được thay đổi. Nó vẫn sẽ trở về cùng một nút vào lúcraversal, đã đàm luận trước.

Các bước trong (a) i-iii được trình bày dưới đây:

*

(Nút hiện tại có)

*

BƯỚC 1) Phá vỡ liên kết hiện có

*

BƯỚC 2) Tạo link chuyển tiếp (từ nút bắt đầu đến nút hiện tại có)

*

BƯỚC 3) chế tạo ra một liên kết vòng lặp cho nút đầu tiên

Tiếp theo, bạn sẽ thử chèn sau đó 1 nút.

Ví dụ: bọn họ hãy chèn “VALUE2” sau nút có “VALUE0”. Mang sử rằng điểm bước đầu là nút có “VALUE0”.

Bạn sẽ phải ngắt rực rỡ giới giữa nút trước tiên và nút đồ vật hai cùng đặt nút có “VALUE2” ngơi nghỉ giữa.Con trỏ tiếp theo của nút trước tiên phải link với nút này và nhỏ trỏ tiếp sau của nút này phải links với nút thiết bị hai trước đó.Phần sót lại của sự bố trí vẫn không cầm cố đổi. Toàn bộ các nút đều có thể truy xuất được bao gồm chúng.

LƯU Ý: Vì tất cả sự bố trí theo chu kỳ nên việc chèn một nút bao gồm quy trình giống như đối với bất kỳ nút nào. Con trỏ xong một quy trình sẽ dứt chu trình kia giống như ngẫu nhiên nút như thế nào khác.

Điều này được hiển thị dưới đây:

*

(Giả sử chỉ có hai nút. Đây là 1 trong trường hợp tầm thường)

*

BƯỚC 1) Xóa liên kết bên trong giữa những nút được kết nối

*

BƯỚC 2) liên kết nút bên trái với nút mới

*

BƯỚC 3) kết nối nút bắt đầu với nút bên phải.


xóa Operasản xuất

Giả sử danh sách links vòng gồm 3 nút. Các trường hợp xóa được giới thiệu dưới đây:

Xóa bộ phận hiện tại
Xóa sau 1 phần tử.

Xóa sống đầu/cuối:

Traverse mang lại nút trước tiên từ nút cuối cùng.Để xóa từ thời điểm cuối chỉ cần phải có một chữ travebước đầu tiên, tự nút cuối cùng đến nút đầu tiên.Xóa link giữa nút sau cùng và nút tiếp theo.Liên kết nút sau cuối với phần tử tiếp theo của nút đầu tiên.Giải phóng nút đầu tiên.

*

(Thiết lập hiện nay tại)

*

Bước 1) Xóa liên kết tròn

*

BƯỚC 2) Xóa links giữa nút trước tiên và nút tiếp theo, liên kết nút ở đầu cuối với nút theo sauwing đầu tiên

*

BƯỚC 3) Giải phóng/giải phóng nút đầu tiên

Xóa sau đó 1 nút:

Traverse cho tới nút tiếp sau là nút sẽ ảnh hưởng xóa.Traverse tới nút tiếp theo, để một bé trỏ trên prevnút ious.Kết nối prevnút ious mang đến nút sau nút hiện nay tại, áp dụng con trỏ tiếp theo của nó.Giải phóng nút hiện tại (đã hủy liên kết).

*

BƯỚC 1) trả sử họ cần xóa nút có “VALUE1”.

*

BƯỚC 2) Xóa liên kết giữa prevnút ious với nút hiện tại. Links p của nórevnút quan trọng có nút tiếp sau được trỏ do nút bây giờ (với VALUE1).

*

BƯỚC 3) hóa giải hoặc giải phóng nút hiện tại.

Traversal của Danh sách link vòng

để trave
Tạo một danh sách liên kết vòng, bắt đầu từ con trỏ cuối cùng, khám nghiệm xem bé trỏ ở đầu cuối có yêu cầu là NULL giỏi không. Nếu đk này sai, hãy kiểm tra xem chỉ có 1 phần tử. Khácwise, Traverse bằng phương pháp sử dụng bé trỏ tạm thời cho tới khi đạt đến con trỏ cuối cùng hoặc các lần nếu như cần, như minh họa trong hình ảnh GIF mặt dưới.

*


Ưu điểm của danh sách link vòng

Một số ưu thế của danh sách links vòng là:

Không tất cả yêu mong gán NULL trong mã. Danh sách vòng không lúc nào trỏ tới bé trỏ NULLless được giải hòa hoàn toàn.Danh sách liên kết vòng hữu dụng cho việc ngừng operakể từ trên đầu và cuối trùng nhau. Algorithms ví dụ như lập kế hoạch Round Robin có thể loại bỏ nhỏ gọn các quá trình được xếp hàng theo phong cách vòng tròn mà lại không gặp gỡ phải những con trỏ lửng lơ hoặc tham chiếu NULL.

Nhược điểm của danh sách link vòng

Dưới đó là những điểm yếu kém của việc áp dụng danh sách link vòng:

Reverse của list vòng tròn là 1 trong những complex so với list đơn hoặc đôi.Nếu ko được xử trí cẩn thận, mã rất có thể bị lặp vô hạn.Khó search thấy phần cuối của danh sách và điều khiển và tinh chỉnh vòng lặp.Chèn vào Start, chúng ta phải travesắp xếp lại danh sách không thiếu để tìm kiếm nút cuối cùng. (Góc nhìn thực hiện)

Danh sách liên kết đơn bên dưới dạng danh sách links vòng

Bạn được khuyến khích nỗ lực đọc và thực thi mã bên dưới. Nó trình bày số học nhỏ trỏ tương quan đến danh sách links vòng.

#include#includestruct node int item; struct node *next;;struct node* add
To
Empty(struct node*,int);struct node *insert
Current(struct node *, int);struct node *insert
After(struct node *, int, int);struct node *remove
After(struct node *, int);struct node *remove
Current(struct node *);void peek(struct node *);int main(){...

*

Giải phù hợp mã:

Hai chiếc mã đầu tiên là những tệp tiêu đề quan trọng đi kèm.Phần tiếp theo sau mô tả cấu tạo của từng nút từ bỏ tham chiếu. Nó chứa một cực hiếm và một nhỏ trỏ thuộc kiểu với cấu trúc.Mỗi cấu tạo liên kết các lần tới những đối tượng cấu trúc cùng loại.Có nhiều nguyên chủng loại hàm khác nhau cho:Thêm một phần tử vào danh sách links trống
Chèn tại hiện đang chỉ địa điểm của danh sách links vòng.Chèn sau một cái rõ ràng lập chỉ mục quý giá trong list liên kết.Xóa/Xóa sau đó 1 thông tin ví dụ lập chỉ mục giá trị trong list liên kết.Xóa trên vị trí bây giờ của danh sách liên kết vòng
Hàm sau cuối in từng phần tử thông qua 1 vòng traversal ở bất kỳ trạng thái nào của list liên kết.

int main() struct node *last = NULL; last = insert
Current(last,4); last = remove
After(last, 4); peek(last); return 0;struct node* add
To
Empty(struct node*last, int data) struct node *temp = (struct node *)malloc(sizeof( struct node)); temp->item = data; last = temp; last->next = last; return last; struct node *insert
Current(struct node *last, int data)

*

Giải thích mã:

Đối với mã add
Empty, hãy phân chia một nút trống bởi hàm malloc.Đối cùng với nút này, đặt tài liệu vào phát triển thành tạm thời.Gán và liên kết biến tuyệt nhất với đổi thay tạm thời
Trả thành phần cuối cùng về văn cảnh chính()/ứng dụng.

struct node *insert
Current(struct node *last, int data) if(last == NULL) return add
To
Empty(last, data); struct node *temp = (struct node *)malloc(sizeof( struct node)); temp -> thắng lợi = data; temp->next = last->next; last->next = temp; return last;struct node *insert
After(struct node *last, int data, int item){ struct node *temp = last->next, *prev = temp, *newnode =NULL;…

*

Giải ưa thích mã

Nếu không có thành phần nào để chèn thì bạn nên bảo đảm an toàn thêm vào danh sách trống cùng trả lại quyền kiểm soát.Tạo thành phần tạm thời để đặt sau phần tử hiện tại.Liên kết các con trỏ như được hiển thị.Trả về con trỏ sau cuối như vào prevchức năng quan liêu trọng.

...struct node *insert
After(struct node *last, int data, int item){ struct node *temp = last->next, *prev = temp, *newnode =NULL; if (last == NULL) return add
To
Empty(last, item); do prev = temp; temp = temp->next; while (temp->next != last && temp->item != data ); if(temp->item != data) printf("Element not found. Please try again");...

*

Giải ham mê mã:

Nếu ko có phần tử nào trong danh sách, hãy bỏ qua dữ liệu, thêm mục lúc này làm mục ở đầu cuối trong danh sách và trả về quyền kiểm soát
Đối với mỗi lần lặp trong vòng lặp do-while, hãy bảo đảm an toàn rằng córevcon trỏ ious chứa chữ t cuối cùngravekết trái rsed.Chỉ tiếp nối mới hoàn toàn có thể traversal xảy ra.Nếu dữ liệu được tra cứu thấy hoặc temp trở về con trỏ sau cuối thì do-while đã kết thúc. Phần mã tiếp theo quyết định các gì cần được tiến hành với mục này.

... If(temp->item != data) printf("Element not found. Please try again"); return last; else newnode = (struct node *)malloc(sizeof(struct node)); newnode->item = item; prev->next = newnode; newnode->next = temp; return last;struct node *remove
Current(struct node *last)...

*

Giải thích mã:

Nếu toàn bộ danh sách đã được traversed, nhưng không tìm kiếm thấy mục, hiện thông báo “không tìm kiếm thấy mục” và tiếp đến trả lại quyền điều khiển cho tất cả những người gọi.Nếu tìm thấy một nút và/hoặc nút đó không phải là nút sau cùng thì hãy tạo ra một nút mới.liên kết prevnút ious với nút mới. Links nút bây giờ với temp (travebiến rsal).Điều này bảo đảm an toàn rằng phần tử được đặt sau một nút cụ thể trong danh sách links vòng. Quay trở lại với fan gọi.

struct node *remove
Current(struct node *last) if(last == NULL) printf("Element Not Found"); return NULL; struct node *temp = last->next; last->next = temp->next; free(temp); return last;struct node *remove
After(struct node *last, int data)

*

Giải say mê mã

Để chỉ xóa nút sau cùng (hiện tại), hãy bình chọn xem danh sách này còn có trống không. Nếu tất cả thì ko thể loại bỏ phần tử nào.Biến trong thời điểm tạm thời chỉ là travechuyển tiếp một liên kết.Liên kết nhỏ trỏ cuối cùng với nhỏ trỏ sau con trỏ đầu tiên.Giải phóng nhỏ trỏ tạm thời. Nó giải phóng con trỏ ở đầu cuối không được liên kết.

struct node *remove
After(struct node *last,int data){ struct node *temp = NULL,*prev = NULL; if (last == NULL) printf("Linked danh mục empty. Cannot remove any element "); return NULL; temp = last->next; prev = temp; vày prev = temp; temp = temp->next; while (temp->next != last && temp->item != data ); if(temp->item != data) printf("Element not found");...

*

Giải ưng ý mã

Như với prevchức năng nhiều loại bỏ, đánh giá xem có thành phần nào không. Nếu vấn đề đó đúng thì ko thể nhiều loại bỏ bộ phận nào.Các bé trỏ được nâng cao, chiếc này thông liền cái kia. (Prev phía sau nhiệt độ)Quá trình tiếp tục cho tới khi tra cứu thấy 1 phần tử hoặc thành phần tiếp theo trở về con trỏ cuối cùng.

if(temp->item != data) printf("Element not found"); return last; else prev->next = temp->next; free(temp); return last;void peek(struct node * last){ struct node *temp = last; if (last == NULL) { return;

*

Giải ưng ý chương trình

Nếu phần tử được tra cứu thấy sau traveđổ chuông toàn cục danh sách liên kết, một thông tin lỗi đã hiển thịyed nói rằng mục ko được kiếm tìm thấy.Nền tảng khácwise, bộ phận được hủy link và giải hòa ở bước 3 với 4.Các prevcon trỏ ious được links với địa chỉ được hướng đẫn là “tiếp theo” bởi phần tử cần xóa (temp).Do đó, nhỏ trỏ tạm thời được giải phóng với giải phóng.

...void peek(struct node * last) struct node *temp = last; if (last == NULL) return; if(last -> next == last) printf("%d-", temp->item); while (temp != last) printf("%d-", temp->item); temp = temp->next;

*

Giải ưa thích mã

Cái quan sát trộm hoặc traversal là ko thể nếu không cần thiết. Người dùng cần phân chia hoặc chèn một nút.Nếu chỉ tất cả một nút thì không bắt buộc phảiraverse, văn bản của nút rất có thể được in với vòng lặp while ko thực thi.Nếu có khá nhiều hơn một nút thì temp đã in toàn bộ mục cho đến bộ phận cuối cùng.Khi đến thành phần cuối cùng, vòng lặp dứt và hàm trả về lệnh điện thoại tư vấn hàm chính.

Ứng dụng của Danh sách links vòng

Triển khai lập định kỳ vòng tròn trong những quy trình khối hệ thống và lập kế hoạch vòng tròn trong trang bị họa vận tốc cao.Lên định kỳ đổ chuông mã thông báo trong computer networks.Nó được sử dụng trong số đơn vị phân phối như bảng shop yêu cầu hoạt động liên tục.ravekết quả của dữ liệu.