fork(1) download
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. struct Product
  6. {
  7. string name;
  8. int id;
  9. double price;
  10.  
  11. Product * next;
  12. };
  13.  
  14. Product *head = NULL;
  15.  
  16. void addNode(string name, int id, double price)
  17. {
  18. Product **node = &head;
  19.  
  20. while ((*node) && ((*node)->name < name)) {
  21. node = &((*node)->next);
  22. }
  23.  
  24. Product *newNode = new Product;
  25. newNode->name = name;
  26. newNode->id = id;
  27. newNode->price = price;
  28. newNode->next = *node;
  29.  
  30. *node = newNode;
  31. }
  32.  
  33. bool removeNode(int nID)
  34. {
  35. Product *node = head, *prev = NULL;
  36.  
  37. while (node)
  38. {
  39. if (node->id == nID)
  40. {
  41. if (prev) prev->next = node->next;
  42. if (node == head) head = node->next;
  43. delete node;
  44. return true;
  45. }
  46.  
  47. prev = node;
  48. node = node->next;
  49. }
  50.  
  51. return false;
  52. }
  53.  
  54. bool changeName(int nID, string newName)
  55. {
  56. Product *node = head;
  57.  
  58. while (node)
  59. {
  60. if (node->id == nID)
  61. {
  62. double price = node->price;
  63. removeNode(nID);
  64. addNode(newName, nID, price);
  65. return true;
  66. }
  67.  
  68. node = node->next;
  69. }
  70.  
  71. return false;
  72. }
  73.  
  74. void printList()
  75. {
  76. Product *node = head;
  77. while (node)
  78. {
  79. cout << node->id << ": " << node->name << " = " << node->price << endl;
  80. node = node->next;
  81. }
  82. }
  83.  
  84. int main()
  85. {
  86. addNode("Orange", 1, 1.50);
  87. addNode("Apple", 2, 1.00);
  88. addNode("Pineapple", 3, 2.75);
  89.  
  90. printList();
  91.  
  92. changeName(3, "Kiwi");
  93. cout << endl;
  94.  
  95. printList();
  96.  
  97. return 0;
  98. }
Success #stdin #stdout 0s 4396KB
stdin
Standard input is empty
stdout
2: Apple = 1
1: Orange = 1.5
3: Pineapple = 2.75

2: Apple = 1
3: Kiwi = 2.75
1: Orange = 1.5