ผลต่างระหว่างรุ่นของ "Algo lab/templates/recursions"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
 
แถว 26: แถว 26:
  
 
== List processing ==
 
== List processing ==
 +
 +
<syntaxhighlight lang="cpp">
 +
#include <iostream>
 +
 +
struct ListNode
 +
{
 +
  int val;
 +
  ListNode* next;
 +
 +
  ListNode(int val, ListNode* next=0)
 +
    : val(val), next(next) {}
 +
};
 +
 +
int n;
 +
ListNode* first = 0;
 +
ListNode* last = 0;
 +
 +
void read_input()
 +
{
 +
  std::cin >> n;
 +
  for(int i=0; i<n; i++) {
 +
    int x;
 +
    std::cin >> x;
 +
    if(first == 0) {
 +
      first = new ListNode(x);
 +
      last = first;
 +
    } else {
 +
      ListNode* new_node = new ListNode(x);
 +
      last->next = new_node;
 +
      last = new_node;
 +
    }
 +
  }
 +
}
 +
 +
bool is_empty(ListNode* node)
 +
{
 +
  return node == 0;
 +
}
 +
 +
bool is_last(ListNode* node)
 +
{
 +
  return node->next == 0;
 +
}
 +
 +
int list_sum(ListNode* node)
 +
{
 +
  if(is_empty(node)) {  // *** for list_max you might want to change this condition as well
 +
    // do something
 +
  } else {
 +
    // do something
 +
  }
 +
}
 +
 +
int main()
 +
{
 +
  read_input();
 +
  std::cout << list_sum(first) << std::endl;
 +
}
 +
</syntaxhighlight>

รุ่นแก้ไขปัจจุบันเมื่อ 04:50, 4 กันยายน 2566

Multiplication / Division

#include <iostream>

int a,b;

int mult(int a, int b)
{
  if(b == 0) {
    // do something
    return 0;
  } else {
    // do some other things
    return 0;
  }
}

int main()
{
  std::cin >> a >> b;

  std::cout << mult(a,b) << std::endl;
}

List processing

#include <iostream>

struct ListNode
{
  int val;
  ListNode* next;

  ListNode(int val, ListNode* next=0)
    : val(val), next(next) {}
};

int n;
ListNode* first = 0;
ListNode* last = 0;

void read_input()
{
  std::cin >> n;
  for(int i=0; i<n; i++) {
    int x;
    std::cin >> x;
    if(first == 0) {
      first = new ListNode(x);
      last = first;
    } else {
      ListNode* new_node = new ListNode(x);
      last->next = new_node;
      last = new_node;
    }
  }
}

bool is_empty(ListNode* node)
{
  return node == 0;
}

bool is_last(ListNode* node)
{
  return node->next == 0;
}

int list_sum(ListNode* node)
{
  if(is_empty(node)) {   // *** for list_max you might want to change this condition as well
    // do something
  } else {
    // do something
  }
}

int main()
{
  read_input();
  std::cout << list_sum(first) << std::endl;
}