Advertisement
Guest User

Untitled

a guest
May 4th, 2015
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.72 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. typedef struct lnode{
  6. int data;
  7. struct lnode* next;
  8. }lNODE;
  9.  
  10. typedef struct node{
  11. char data;
  12. struct node* next;
  13. }NODE;
  14.  
  15. typedef struct list{
  16. NODE* head;
  17. NODE* tail;
  18. }LIST;
  19.  
  20. typedef struct student{
  21. LIST first;
  22. int grade;
  23. } STUDENT;
  24.  
  25. STUDENT unScramble(LIST lst);
  26. void deleteLnode(LIST &lst, NODE *lnode, NODE* saver);
  27. void makeEmptyList(LIST &lst);
  28. void insertNodeToEndList(LIST &lst, NODE *newTail);
  29. bool isEmptyList(LIST lst);
  30. void insertDataToEndList(LIST &lst, char data);
  31. NODE* creatNewListNode(char data, NODE* next);
  32. void printList(LIST lst);
  33.  
  34. void main()
  35. {
  36. STUDENT student;
  37. LIST lst;
  38. NODE* saver;
  39. makeEmptyList(lst);////////////
  40. insertDataToEndList(lst, 'm');
  41. insertDataToEndList(lst, '9');
  42. insertDataToEndList(lst, 'u');
  43. insertDataToEndList(lst, 'l');
  44. insertDataToEndList(lst, '4');
  45. insertDataToEndList(lst, 'l');
  46. insertDataToEndList(lst, 'y');
  47.  
  48. makeEmptyList(student.first);
  49. student = unScramble(lst);
  50.  
  51. cout << "The unscramble list is: ";
  52.  
  53. printList(student.first);
  54.  
  55. while(isEmptyList(lst) == false)
  56. {
  57. saver = lst.head;
  58. lst.head = lst.head->next;
  59. delete[] saver;
  60. }
  61.  
  62. system("pause");
  63. }
  64.  
  65. STUDENT unScramble(LIST lst)
  66. {
  67. STUDENT student;
  68. student.grade = 0;
  69. makeEmptyList(student.first);
  70. NODE *curr, *saver;
  71. curr = lst.head;
  72.  
  73.  
  74. while (curr != NULL)
  75. {
  76.  
  77. if (47 < curr->data && curr->data < 58)
  78. {
  79. student.grade *= 10;
  80. student.grade += (curr->data);
  81.  
  82. saver = curr;
  83. curr = curr->next;
  84. deleteLnode(lst, saver, NULL);
  85. }
  86.  
  87. else
  88. { saver = curr->next;//////////////////////
  89. insertNodeToEndList(student.first, curr);
  90. curr = saver;////////
  91. }
  92. }
  93. return student;
  94. }
  95.  
  96. void deleteLnode(LIST &lst, NODE *lnode, NODE* saver)
  97. {
  98. if (lst.head == lnode && lst.tail == lnode)
  99. {
  100. lst.head = lst.tail = NULL;
  101. }
  102.  
  103. else if (lst.head == lnode)
  104. {
  105. lst.head = lnode->next;
  106. }
  107.  
  108. else if (lnode->next->next == NULL)
  109. {
  110. lnode->next = NULL;
  111. lst.tail = lnode;
  112. }
  113.  
  114. else
  115. {
  116. saver = lnode->next;
  117. }
  118. }
  119.  
  120. void makeEmptyList(LIST &lst)
  121. {
  122. lst.head = lst.tail = NULL;
  123. }
  124.  
  125. void insertNodeToEndList(LIST &lst, NODE *newTail)
  126. {
  127. if (isEmptyList(lst) == true)
  128. {
  129. lst.head = lst.tail = newTail;
  130. }
  131.  
  132. else
  133. {
  134. lst.tail->next = newTail;
  135. lst.tail = newTail;
  136. }
  137.  
  138. lst.tail->next = NULL;
  139. }
  140.  
  141. bool isEmptyList(LIST lst)
  142. {
  143. if (lst.head == NULL)
  144. return true;
  145.  
  146. else
  147. return false;
  148. }
  149.  
  150. void insertDataToEndList(LIST &lst, char data)
  151. {
  152. NODE *newTail;
  153. newTail = creatNewListNode(data, NULL);
  154. insertNodeToEndList(lst, newTail);
  155. }
  156.  
  157. NODE* creatNewListNode(char data, NODE* next)
  158. {
  159. NODE* res;
  160. res = new NODE;
  161. res->data = data;
  162. res->next = next;
  163.  
  164. return res;
  165. }
  166.  
  167. void printList(LIST lst)
  168. {
  169. NODE* curr = lst.head;
  170.  
  171. while (curr != NULL)
  172. {
  173. cout << curr->data << " ";
  174. curr = curr->next;
  175. }
  176. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement