Advertisement
Guest User

Untitled

a guest
Mar 18th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.74 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define maxn 10007
  3. #define oo 1000000007
  4. #define ld long double
  5. #define ll long long
  6. #define FOR(i,a,b) for(long i=(a), _i=(b); i<=_i;i++)
  7. #define FORD(i,b,a) for(long i=(b), _i=(a); i>=_i;i--)
  8.  
  9. using namespace std;
  10.  
  11. typedef struct Node{
  12. char* MaSV;
  13. char* Hoten;
  14. ld Diem;
  15. struct Node *left = NULL, *right = NULL;
  16. } Node;
  17.  
  18. Node* Head = NULL;
  19. Node* Tail = NULL;
  20.  
  21. Node* creatNode(char* Ma, char* Ten, ld diem){
  22. Node* N;
  23. int len;
  24. N = new Node;
  25. len = strlen(Ma);
  26. N->MaSV = new char[len];
  27. N->MaSV = strcpy(N->MaSV, Ma);
  28. len = strlen(Ten);
  29. N->Hoten = new char[len];
  30. N->Hoten = strcpy(N->Hoten, Ten);
  31. N->Diem = diem;
  32. return N;
  33. }
  34. int insertList(Node* N){
  35. Node* M;
  36. if (Head == NULL ){
  37. Head = N;
  38. Tail = N;
  39. return 0;
  40. }
  41. M = Tail;
  42. M->right = N;
  43. N->left = M;
  44. Tail = N;
  45. return 0;
  46. }
  47.  
  48. int creatDS(){
  49. ll n;
  50. Node* N;
  51. char* Ma;
  52. char* Ten;
  53. ld diem;
  54. cout << "Tao moi DS" << endl;
  55. cin >> n;
  56. FOR(i,0,n-1){
  57. cin.ignore(1);
  58. Ma = new char[255];
  59. cin.getline(Ma, 255);
  60. Ten = new char[255];
  61. cin.getline(Ten, 255);
  62. cin >> diem;
  63. N = creatNode(Ma, Ten, diem);
  64. insertList(N);
  65. }
  66. return 0;
  67. }
  68.  
  69. int printList(){
  70. Node* N;
  71. N = Head;
  72. while (N!= NULL){
  73. cout << "Thong tin ve sinh vien co ma " << N->MaSV << endl;
  74. cout << "Ho ten: " << N->Hoten << endl;
  75. cout << "Diem trung binh: " << N->Diem << endl << endl;
  76. N = N->right;
  77. }
  78. return 0;
  79. }
  80.  
  81. int printNode(){
  82. Node* N;
  83. char* Ma;
  84. cin.ignore(1);
  85. Ma = new char[255];
  86. cin.getline(Ma, 255);
  87. N = Head;
  88. while (N!= NULL){
  89. if (strcmp(N->MaSV, Ma) == 0) {
  90. cout << "Sinh vien co ma " << Ma << " nam tai dia chi " << N << endl;
  91. return 0;
  92. }
  93. N = N->right;
  94. }
  95. cout << "Sinh vien co ma " << Ma << " khong ton tai!" << endl;
  96. return 0;
  97. }
  98.  
  99.  
  100. int findNode(){
  101. Node* N;
  102. char* Ma;
  103. cin.ignore(1);
  104. Ma = new char[255];
  105. cin.getline(Ma, 255);
  106. N = Head;
  107. while (N!= NULL){
  108. if (strcmp(N->MaSV, Ma) == 0) {
  109. cout << "Thong tin ve sinh vien co ma " << Ma << " :\n";
  110. cout << "Ho ten: " << N->Hoten << endl;
  111. cout << "Diem trung binh: " << N->Diem << endl;
  112. return 0;
  113. }
  114. N = N->right;
  115. }
  116. cout << "Sinh vien co ma " << Ma << " khong ton tai!" << endl;
  117. return 0;
  118. }
  119.  
  120. int deleteNode(){
  121. Node* N;
  122. char* Ma;
  123. cin.ignore(1);
  124. Ma = new char[255];
  125. cin.getline(Ma, 255);
  126. N = Head;
  127. if (strcmp(N->MaSV, Ma) == 0) {
  128. N->right->left = NULL;
  129. Head = N->right;
  130. if (Head == NULL) Tail == NULL;
  131. delete N;
  132. return 0;
  133. }
  134. N = Tail;
  135. if (strcmp(N->MaSV, Ma) == 0) {
  136. N->left->right = NULL;
  137. Tail = N->left;
  138. if (Head == NULL) Tail == NULL;
  139. delete N;
  140. return 0;
  141. }
  142. N = Head->right;
  143. while (N->right!= NULL){
  144. if (strcmp(N->MaSV, Ma) == 0) {
  145. N->left->right=N->right;
  146. N->right->left=N->left;
  147. delete N;
  148. return 0;
  149. }
  150. N = N->right;
  151. }
  152. cout << "Sinh vien co ma " << Ma << " khong ton tai!" << endl;
  153. return 0;
  154. }
  155.  
  156. int insertNode(){
  157. Node *M;
  158. Node* N;
  159. char* Ma;
  160. char* Maleft;
  161. char* Ten;
  162. ld diem;
  163. cin.ignore(1);
  164. Ma = new char[255];
  165. cin.getline(Ma, 255);
  166. Ten = new char[255];
  167. cin.getline(Ten, 255);
  168. cin >> diem;
  169. N = creatNode(Ma, Ten, diem);
  170. cin.ignore(1);
  171. Maleft = new char[255];
  172. cin.getline(Maleft, 255);
  173.  
  174. if (strcmp(Maleft,"NULL") == 0) {
  175. M = Head;
  176. M->left = N;
  177. N->right = M;
  178. Head = N;
  179. return 0;
  180. }
  181. M = Head;
  182. while (M!= NULL){
  183. if (strcmp(M->MaSV, Maleft) == 0) {
  184. if (M == Tail) {
  185. M->right = N;
  186. N->left= M;
  187. Tail = N;
  188. }
  189. else {
  190. M->right->left = N;
  191. N->right = M->right;
  192. M->right = N;
  193. N->left = M;
  194. }
  195. return 0;
  196. }
  197. M = M->right;
  198. }
  199. return 0;
  200. }
  201.  
  202. int sortList(){
  203. Node* N;
  204. Node* M;
  205. Node* tmp;
  206. N = Head;
  207. while (N->right!=NULL){
  208. M = N->right;
  209. while (M!=NULL){
  210. if (N->Diem>M->Diem){
  211. tmp = M;
  212. M->Diem = N->Diem;
  213. N->Diem = tmp->Diem;
  214. M->MaSV = strcpy(M->MaSV, N->MaSV);
  215. N->MaSV = strcpy(N->MaSV, tmp->MaSV);
  216. M->Hoten = strcpy(M->Hoten, N->Hoten);
  217. N->Hoten = strcpy(N->Hoten, tmp->Hoten);
  218. }
  219. M=M->right;
  220. }
  221. N=N->right;
  222. }
  223. return 0;
  224. }
  225.  
  226. int main(){
  227. int menu;
  228. while (1){
  229. cin >> menu;
  230. switch(menu) {
  231. case 1: {
  232. creatDS();
  233. break;
  234. }
  235. case 2: {
  236. cout << "In DS" << endl;
  237. printList();
  238. break;
  239. }
  240. case 3: {
  241. cout << "Tim kiem SV" << endl;
  242. printNode();
  243. break;
  244. }
  245. case 4: {
  246. cout << "In thong tin SV" << endl;
  247. findNode();
  248. break;
  249. }
  250. case 5: {
  251. cout << "Chen SV" << endl;
  252. insertNode();
  253. break;
  254. }
  255. case 6: {
  256. cout << "Xoa SV" << endl;
  257. deleteNode();
  258. break;
  259. }
  260. case 7: {
  261. cout << "Sap xep DS" << endl;
  262. sortList();
  263. break;
  264. }
  265. default: exit(0);
  266. }
  267. }
  268. return 0;
  269. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement