fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. // โครงสร้างของ stack
  6. typedef struct Stack {
  7. char *data;
  8. struct Stack *next;
  9. } Stack;
  10.  
  11. // ฟังก์ชัน push ตัวอักษรเข้าไปใน stack
  12. void push(Stack **top, char c) {
  13. Stack *newNode = (Stack *)malloc(sizeof(Stack));
  14. newNode->data = (char *)malloc(sizeof(char));
  15. *(newNode->data) = c;
  16. newNode->next = *top;
  17. *top = newNode;
  18. }
  19.  
  20. // ฟังก์ชัน pop ตัวอักษรออกจาก stack
  21. char pop(Stack **top) {
  22. if (*top == NULL) return '\0';
  23. Stack *temp = *top;
  24. char c = *(temp->data);
  25. *top = (*top)->next;
  26. free(temp->data);
  27. free(temp);
  28. return c;
  29. }
  30.  
  31. // ฟังก์ชันสร้าง stack จาก string
  32. void createStack(Stack **top, char *str) {
  33. for(int i = 0; i < strlen(str); i++) {
  34. push(top, str[i]);
  35. }
  36. }
  37.  
  38. // ฟังก์ชันพิมพ์ stack ออกมาเป็นประโยค
  39. void printFromStack(Stack **top) {
  40. char c;
  41. while((c = pop(top)) != '\0') {
  42. printf("%c", c);
  43. }
  44. }
  45.  
  46. int main() {
  47. // แบ่งประโยคเป็นหลายส่วน
  48. char part1[] = "pen";
  49. char part2[] = " fan";
  50. char part3[] = " gun";
  51. char part4[] = " mai?";
  52.  
  53. Stack *stack = NULL;
  54.  
  55. // เพิ่มแต่ละส่วนเข้าไปใน stack
  56. createStack(&stack, part1);
  57. createStack(&stack, part2);
  58. createStack(&stack, part3);
  59. createStack(&stack, part4);
  60.  
  61. // พิมพ์คำที่ได้จาก stack
  62. printFromStack(&stack);
  63.  
  64. return 0;
  65. }
Success #stdin #stdout 0s 5284KB
stdin
Standard input is empty
stdout
?iam nug naf nep