Computer >> Máy Tính >  >> Lập trình >> lập trình C

In các nút thay thế của danh sách được liên kết (Phương pháp lặp lại) bằng ngôn ngữ C

Trong sự cố này, chương trình phải in các thay thế từ danh sách liên kết đã cho đang để lại một bản in khác, v.v. bằng cách sử dụng phương pháp lặp lại.

Phương thức lặp là phương thức thường sử dụng các vòng lặp được thực thi cho đến khi điều kiện giữ giá trị 1 hoặc true.

Giả sử, danh sách chứa các nút 29, 34, 43, 56 và 88 và hơn đầu ra sẽ là các nút thay thế như 29, 43 và 88.

In các nút thay thế của danh sách được liên kết (Phương pháp lặp lại) bằng ngôn ngữ C

Ví dụ

Input: 29->34->43->56->88
Output: 29 43 88

Cách tiếp cận là duyệt qua toàn bộ danh sách cho đến nút cuối cùng. Trong khi, việc duyệt qua một biến bộ đếm có thể được lấy tăng lên 1 và giá trị được in khi bộ đếm là chẵn hoặc lẻ tùy thuộc vào sự lựa chọn của người dùng. Nếu người dùng muốn nó hiển thị từ 0 thì bộ đếm có giá trị chẵn được hiển thị còn bộ đếm có giá trị lẻ sẽ được hiển thị.

Đoạn mã dưới đây cho thấy cách triển khai c của thuật toán đã cho.

Thuật toán

START
   Step 1 -> create node variable of type structure
      Declare int data
      Declare pointer of type node using *next
   Step 2 -> Declare Function void alternate(struct node* head)
      Set int count = 0
      Loop While (head != NULL)
      IF count % 2 = 0
         Print head->data
         Set count++
         Set head = head->next
      End
   Step 3 -> Declare Function void push(struct node** header, int newdata)
      Create newnode using malloc function
      Set newnode->data = newdata
      Set newnode->next = (*header)
      set (*header) = newnode
   step 4 -> In Main()
      create head pointing to first node using struct node* head = NULL
      Call alternate(head)
STOP

Ví dụ

#include <stdio.h>
#include <stdlib.h>
//creating structure of a node
struct node {
   int data;
   struct node* next;
};
//function to find and print alternate node
void alternate(struct node* head) {
   int count = 0;
   while (head != NULL) {
      if (count % 2 == 0)
         printf(" %d ", head->data);
      count++;
      head = head->next;
   }
}
//pushing element into the list
void push(struct node** header, int newdata) {
   struct node* newnode =
   (struct node*)malloc(sizeof(struct node));
   newnode->data = newdata;
   newnode->next = (*header);
   (*header) = newnode;
}
int main() {
   printf("alternate nodes are :");
   struct node* head = NULL;
   push(&head, 1); //calling push function to push elements in list
   push(&head, 9);
   push(&head, 10);
   push(&head, 21);
   push(&head, 80);
   alternate(head);
   return 0;
}

Đầu ra

Nếu chúng ta chạy chương trình trên thì nó sẽ tạo ra kết quả sau.

alternate nodes are : 80 10 1