Вы можете использовать следующий запрос для MYSQL:
SHOW columns FROM your-table;
Ниже приведен пример кода, который показывает, как реализовать выше синтаксис в php для перечисления имен столбцов:
$sql = "SHOW COLUMNS FROM your-table";
$result = mysqli_query($conn,$sql);
while($row = mysqli_fetch_array($result)){
echo $row['Field']."
";
}
Подробнее о выходе SHOW COLUMNS FROM TABLE
: MySQL Refrence.
Как следует из названия функции, она обменивается данными в каждой паре ячеек (а не в самих ячейках).
Обмен данными из ячейки со следующей очень хорошо виден:
blockquote>int tmp = head->next->data; head->next->data = head->data; head->data = tmp;
Как работает обратный вызов рекурсии?
blockquote>вызов с
pairWiseSwap(head->next->next);
обходят пару ячеек, чьи данные были поменены местами для повторного выполнения на следующих.
Давайте рассмотрим пример с этим полным кодом:
#include <stdio.h> #include <stdlib.h> struct node { struct node * next; int data; }; void pairWiseSwap(struct node *head) { // The task is to complete this method if(!head || (head && head->next==NULL)) return; if(head->next!=NULL) { int tmp = head->next->data; head->next->data = head->data; head->data = tmp; pairWiseSwap(head->next->next); } } struct node * mk(int d, struct node * nx) { struct node * n = malloc(sizeof(struct node)); if (n != NULL) { n->data = d; n->next = nx; } return n; } void pr(struct node * head) { while (head) { printf("%d ", head->data); head = head->next; } } int main() { struct node * head = mk(0, mk(1, mk(2, mk(3, mk(4, mk(5, NULL)))))); printf("before : "); pr(head); pairWiseSwap(head); printf("\nafter: "); pr(head); putchar('\n'); /* free resources */ while (head) { struct node * n = head->next; free(head); head = n; } }
Компиляция и выполнение:
pi@raspberrypi:/tmp $ gcc -pedantic -Wextra h.c pi@raspberrypi:/tmp $ ./a.out before : 0 1 2 3 4 5 after: 1 0 3 2 5 4
Примечание
if(!head || (head && head->next==NULL)) return;
может быть просто
if ((head == NULL) || (head->next==NULL)) return;
, потому что если головка не равна нулю в левой части
<час >||
, это бесполезная проверка, опять же, она не равна нулю в правой частиЕсли рекурсия выполняется на
head->next
, а не наhead->next->next
, функция выполняет своего рода вращение, и в результате получается1 2 3 4 5 0