Advertisement
Guest User

Untitled

a guest
May 9th, 2016
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.37 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <fstream>
  4. #include <string>
  5. #include <string.h>
  6.  
  7. using namespace std;
  8.  
  9. struct element
  10. {
  11. element *poprz;
  12. int dane;
  13. element *nast;
  14. };
  15.  
  16. void wyswietl_liste(element* gl) {
  17. element* pom;
  18. int i=1;
  19. pom = gl;
  20. system("CLS");
  21. if (pom==NULL) cout << "Lista jest pusta...\n";
  22. else {
  23. cout<<"Nr elementu Element listy\n";
  24. while (pom!=NULL)
  25. {
  26. cout <<"\t"<<i<<"\t\t"<< pom->dane << "\n";
  27. pom = pom->nast;
  28. i++;
  29. }
  30. }
  31.  
  32. }
  33.  
  34. void dodaj_p(element* (&gl)) {
  35. int i;
  36. element* pom;
  37. pom = new element;
  38. cout << "\nPodaj liczbe calkowita: ";
  39. cin >> i;
  40. pom->dane=i;
  41. pom->poprz=NULL;
  42. pom->nast = gl;
  43. if (gl!=NULL) gl->poprz=pom;
  44. gl = pom;
  45. }
  46.  
  47. void dodaj_k(element* (&gl)) {
  48. int i;
  49. element *pom, *pom1;
  50. pom = new element;
  51. cout << "\nPodaj liczbe calkowita: ";
  52. cin >> i;
  53. pom->dane=i;
  54. pom->nast=NULL;
  55. pom->poprz=NULL;
  56. if (gl==NULL) gl=pom;
  57. else {
  58. pom1=gl;
  59. while (pom1->nast!=NULL) pom1=pom1->nast;
  60. pom1->nast=pom;
  61. pom->poprz=pom1;
  62. }
  63. }
  64.  
  65. void dodaj_sr(element* (&gl)) {
  66. int n;
  67. wyswietl_liste(gl);
  68. cout<<"Podaj nr elementu po ktorym chcesz dodac element: ";
  69. cin >> n;
  70. if (n==0) dodaj_p(gl);
  71. else {
  72. int i,j;
  73. element *pom, *pom1;
  74. pom = new element;
  75. cout << "\nPodaj liczbe calkowita: ";
  76. cin >> i;
  77. pom->dane=i;
  78. pom->nast=NULL;
  79. pom->poprz=NULL;
  80. pom1=gl;
  81. for (j=1;j<n;j++) pom1=pom1->nast;
  82. pom->nast=pom1->nast;
  83. pom1->nast=pom;
  84. pom->poprz=pom1;
  85. pom->nast->poprz=pom;
  86. }
  87. }
  88.  
  89. void usun_p(element* (&gl)) {
  90. if (gl!=NULL) {
  91. element* pom;
  92. pom = gl;
  93. gl = gl->nast;
  94. gl->poprz=NULL;
  95. delete pom;
  96. }
  97. }
  98.  
  99. void usun_k(element* (&gl)) {
  100. if (gl!=NULL) {
  101. if (gl->nast==NULL) delete gl;
  102. else {
  103. element* pom;
  104. pom = gl;
  105. while (pom->nast->nast!=NULL) pom=pom->nast; // dojscie do przedostatniego elementu listy
  106. delete pom->nast;
  107. pom->nast=NULL;
  108. }
  109. }
  110. }
  111.  
  112. void usun_sr(element* (&gl)) {
  113. int n;
  114. wyswietl_liste(gl);
  115. cout<<"Podaj nr elementu ktory chcesz usunac: ";
  116. cin >> n;
  117. if (n!=0) {
  118. if (n==1) usun_p(gl);
  119. else {
  120. int j;
  121. element *pom,*pom1;
  122. pom=gl;
  123. for (j=1;j<n-1;j++) pom=pom->nast;
  124. pom1=pom->nast;
  125. pom->nast=pom->nast->nast;
  126. pom1->nast->poprz=pom;
  127. delete pom1;
  128. }
  129. }
  130. }
  131.  
  132. void usun_liste(element* (&gl)) {
  133. element *pom;
  134. while (gl!=NULL) {
  135. pom=gl;
  136. gl=gl->nast;
  137. delete pom;
  138. }
  139. }
  140. void zapisz_l_plik(element* gl)
  141. {
  142. ofstream f;
  143. f.open("liczby.rob",ios::out);
  144. element* pom;
  145. pom = gl;
  146. while (pom!=NULL)
  147. {
  148. f<<pom->dane<< "\n";
  149. pom = pom->nast;
  150. }
  151. f.close();
  152. /*while(gl!=NULL) bez tego element* pom
  153. {
  154. f<<gl->dane<<endl;
  155. gl=gl->nast;
  156. }*/
  157. }
  158. void odczyt_l_plik(element* (&gl))
  159. {
  160.  
  161. fstream f;
  162. f.open("liczby.txt", ios::in);
  163. while(!f.eof())
  164. {
  165. element *pom, *pom1;
  166. pom = new element;
  167.  
  168. f>>pom->dane;
  169. pom->nast=NULL;
  170. pom->poprz=NULL;
  171. if (gl==NULL) gl=pom;
  172. else {
  173. pom1=gl;
  174. while (pom1->nast!=NULL) pom1=pom1->nast;
  175. pom1->nast=pom;
  176. pom->poprz=pom1;
  177. }
  178. }
  179. wyswietl_liste(gl);
  180. f.close();
  181. }
  182. int ilosc(element* gl)
  183. {
  184. element* pom;
  185. int ilosc=1;
  186. pom=gl;
  187. while (pom->nast!=NULL)
  188. {
  189. pom=pom->nast;
  190. ilosc++;
  191. }
  192. return ilosc;
  193. }
  194. void sortuj_przez_wstawianie(element* (&gl))
  195. {
  196. int n=ilosc(gl);
  197. element *pom;
  198. pom = gl;
  199. while (pom->nast!=NULL) pom=pom->nast;
  200.  
  201. for (int j=n; j>1; j--)
  202. {
  203. int i=1;
  204. if(pom->dane<pom->poprz->dane)
  205. {
  206. int bufor=pom->dane;
  207. pom->dane=pom->poprz->dane;
  208. pom->poprz->dane=bufor;
  209. pom->poprz->nast=pom; //
  210. }
  211. while (pom->dane>pom->nast->dane&&pom->nast!=NULL)
  212. {
  213.  
  214. int bufor1=pom->dane;
  215. pom->dane=pom->nast->dane;
  216. pom->nast->dane=bufor1;
  217. pom->nast->poprz=pom; //
  218. pom=pom->nast;
  219. i++;
  220. }
  221.  
  222. while (i>0)
  223. {
  224. pom=pom->poprz;
  225. i--;
  226. }
  227.  
  228. }
  229. gl=pom;
  230. }
  231.  
  232.  
  233. int main() {
  234. int w;
  235. element* glowa_l;
  236. glowa_l = NULL;
  237. do {
  238. system("CLS");
  239. cout<<"\n1. Wyswietl liste - 1";
  240. cout<<"\n2. Dodaj na poczatku listy - 2";
  241. cout<<"\n3. Dodaj na koncu listy - 3";
  242. cout<<"\n4. Dodaj w srodku listy - 4";
  243. cout<<"\n5. Usun z poczatku listy - 5";
  244. cout<<"\n6. Usun z konca listy - 6";
  245. cout<<"\n7. Usun ze srodka listy - 7";
  246. cout<<"\n8. Zapisz liste do pliku - 8";
  247. cout<<"\n9. Odczytaj liste z pliku - 9";
  248. cout<<"\n10. Posortuj rosnaco - 10";
  249. cout<<"\n11. Koniec - 11\n\n";
  250. cin >> w;
  251. switch(w)
  252. {
  253. case 1:
  254. {
  255. system("CLS");
  256. wyswietl_liste(glowa_l);
  257. system("PAUSE");
  258. break;
  259. }
  260. case 2:
  261. {
  262. system("CLS");
  263. dodaj_p(glowa_l);
  264. system("PAUSE");
  265. break;
  266. }
  267. case 3:
  268. {
  269. system("CLS");
  270. dodaj_k(glowa_l);
  271. system("PAUSE");
  272. break;
  273. }
  274. case 4:
  275. {
  276. system("CLS");
  277. dodaj_sr(glowa_l);
  278. system("PAUSE");
  279. break;
  280. }
  281. case 5:
  282. {
  283. system("CLS");
  284. usun_p(glowa_l);
  285. system("PAUSE");
  286. break;
  287. }
  288. case 6:
  289. {
  290. system("CLS");
  291. usun_k(glowa_l);
  292. system("PAUSE");
  293. break;
  294. }
  295. case 7:
  296. {
  297. system("CLS");
  298. usun_sr(glowa_l);
  299. system("PAUSE");
  300. break;
  301. }
  302.  
  303. case 8:
  304. {
  305. system("CLS");
  306. zapisz_l_plik(glowa_l);
  307. system("PAUSE");
  308. break;
  309. }
  310. case 9:
  311. {
  312. system("CLS");
  313. odczyt_l_plik(glowa_l);
  314. system("PAUSE");
  315. break;
  316. }
  317. case 10:
  318. {
  319. system("CLS");
  320. sortuj_przez_wstawianie(glowa_l);
  321. system("PAUSE");
  322. break;
  323. }
  324.  
  325. }
  326. } while (w!=11);
  327. usun_liste(glowa_l);
  328. return 0;
  329. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement