fork download
  1. #include "iostream"
  2. using namespace std;
  3.  
  4. struct Node {
  5. int Key;
  6. Node *Next;
  7. };
  8.  
  9. Node *newNode(int data);
  10. void AddHead(Node *&pHead, int data);
  11. void AddAfterX(Node *Head, int x);
  12. void AddLast(Node *pHead, int data);
  13. void GetList(Node *pHead);
  14. bool FindX(Node *pHead, int x);
  15.  
  16. int main() {
  17. Node *pHead;
  18. AddHead(pHead,15);
  19. AddHead(pHead,13);
  20. AddHead(pHead,20);
  21. AddHead(pHead,11);
  22. GetList(pHead);
  23. return 0;
  24. }
  25.  
  26. Node *newNode(int data){
  27. Node *p = new Node;
  28. p ->Key = data;
  29. p ->Next = NULL;
  30. return p;
  31. }
  32.  
  33. void GetList(Node *pHead){
  34. cout<<"\n";
  35. while(pHead != NULL){
  36. cout<<" "<<pHead->Key;
  37. pHead=pHead->Next;
  38. }
  39. }
  40.  
  41. void AddHead(Node* &pHead, int data){
  42. Node *temp = newNode(data);
  43. if(pHead == NULL)
  44. pHead = temp;
  45. else{
  46. temp->Next = pHead;
  47. pHead = temp;
  48. }
  49. }
  50.  
  51. void AddLast(Node *pHead, int data)
  52. {
  53. if(pHead==NULL)
  54. AddHead(pHead, data);
  55. else
  56. {
  57. Node *temp = newNode(data);
  58. while(pHead->Next!=NULL);
  59. pHead = pHead->Next;
  60. pHead->Next = temp;
  61. }
  62. }
  63.  
  64. bool FindX(Node *pHead, int x)
  65. {
  66. while(pHead!=NULL)
  67. if(pHead->Key==x)
  68. break;
  69. else
  70. pHead =pHead->Next;
  71. if(pHead==NULL)
  72. return false;
  73. else
  74. return true;
  75. }
  76.  
  77. void AddafterX(Node *pHead, int x)
  78. {
  79. if(FindX(pHead,x)==true)
  80. {
  81. while(pHead->Key != x)
  82. pHead = pHead->Next;
  83.  
  84. int data;
  85. cout<<"\nNhap gia tri can them = ";
  86. cin>>data;
  87. Node *temp = newNode(data);
  88. temp->Next = pHead->Next;
  89. pHead->Next = temp;
  90. }
  91. }
Success #stdin #stdout 0s 5304KB
stdin
Standard input is empty
stdout
 11 20 13 15