1. /***
  2. Aytaç CİCİ
  3. http://www.aytaccici.com
  4.  
  5. **/
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <conio.h>
  9. #include <time.h>
  10. /* Ana Program Baslangıcı */
  11. #define BOYUT 5
  12. struct yigin{
  13. int top;
  14. int veri[BOYUT];
  15. };
  16. /*** Prototip Tanımlaması Baslangıcı **/
  17.  
  18. struct yigin yiginOlustur(struct yigin Yigin);
  19. struct yigin push(struct yigin Yigin, int eklenecekVeri);
  20. int isfull(struct yigin Yigin);
  21. struct yigin pop(struct yigin Yigin);
  22. int isEmpty(struct yigin Yigin);
  23. struct yigin yiginKopyala(struct yigin Yigin);
  24. void tumunuGoster(struct yigin Yigin);
  25. void yigitiTersle(struct yigin Yigin);
  26. int yiginElemanAra(struct yigin Yigin, int aranan);
  27. int yiginEnKucuk(struct yigin Yigin);
  28. int yiginEnBuyuk(struct yigin Yigin);
  29.  
  30.  
  31. /*** An program baslangici **/
  32. int main(void)
  33. {
  34. struct yigin s1;
  35. struct yigin s2;
  36. int eklenecekSayi;
  37. s1 = yiginOlustur(s1);
  38. s2 = yiginOlustur(s2);
  39. srand(time(NULL));
  40. while(s1.top<BOYUT-1)
  41. {
  42. eklenecekSayi = 1+ rand()%1000;
  43. s1=push(s1,eklenecekSayi);
  44. }
  45. printf("Yigittaki Butun elamanları listeleyelim..\n");
  46. tumunuGoster(s1);
  47. printf("Kopyaladigimiz Yigittaki Butun elamanlari listeleyelim..\n");
  48. //s2=yiginKopyala(s1);
  49. //tumunuGoster(s2);
  50. /**yigitiTersle(s1);
  51.   printf("Simdi Yeni Olustudugumuz Yigittan bir eleman cikartalim\n Ve Yigiti Yeniden listeleyelim\n");
  52.   s2=pop(s2);
  53.   tumunuGoster(s2);
  54.   **/
  55. int enkElaman = yiginEnKucuk(s1);
  56. int enbElaman = yiginEnBuyuk(s1);
  57. printf("Yigitta ki en kucuk eleman---> %d \n",enkElaman);
  58. printf("Yigitta ki en buyuk eleman---> %d \n",enbElaman);
  59. s2=push(s2,9);
  60. s2=push(s2,4);
  61. s2=push(s2,2);
  62. s2=push(s2,100);
  63. tumunuGoster(s2);
  64.  
  65. int arananEleman = yiginElemanAra(s1,150);
  66. int arananEleman2 = yiginElemanAra(s2,4);
  67.  
  68. printf("Aranan Eleman 150 S1 Yigitinda %d siradadir (-1 ise yok anlamindadir) \n",arananEleman);
  69. printf("Aranan Eleman 4 S2 Yigitinda %d siradadir (-1 ise yok anlamindadir) \n",arananEleman2);
  70. system("pause");
  71. return 0;
  72. }
  73. /*** Yeni Bir Yigin Olusturan Fonksiyon **/
  74. struct yigin yiginOlustur(struct yigin Yigin){
  75. Yigin.top=0;
  76. return Yigin;
  77. }
  78. /*** Yigin'a Eleman Ekleyecen Fonksiyon **/
  79. struct yigin push(struct yigin Yigin, int eklenecekVeri){
  80. if(isfull(Yigin)==1)
  81. {
  82. printf("Yigit Doludur\n");
  83. //exit(1);
  84. }
  85. Yigin.top=Yigin.top+1;
  86. Yigin.veri[Yigin.top]=eklenecekVeri;
  87. return Yigin;
  88. }
  89.  
  90. /*** Yiginda Eleman Cıkartan Fonksiyon **/
  91. struct yigin pop(struct yigin Yigin){
  92. if(isEmpty(Yigin)==1)
  93. {
  94. printf("Yigit Bos\n");
  95. exit(1);
  96. }
  97. Yigin.top=Yigin.top-1;
  98. return Yigin;
  99. }
  100. /*** Yigitin Dolu olup olmadığını kontrol eden fonksiyon **/
  101. int isfull(struct yigin Yigin){
  102. if(Yigin.top==BOYUT-1)
  103. return 1;
  104. else return 0;
  105. }
  106.  
  107. /*** Yigitin bos olup olmadığını kontrol eden fonksiyon **/
  108. int isEmpty(struct yigin Yigin){
  109. if(Yigin.top==0)
  110. return 1;
  111. else return 0;
  112. }
  113.  
  114. /*** Bir Yigin'i basşka bir yığına kopyalayan fonksiyon. **/
  115. struct yigin yiginKopyala(struct yigin Yigin){
  116. struct yigin YeniYigin;
  117. YeniYigin=yiginOlustur(YeniYigin);
  118. if(isEmpty(Yigin)==1)
  119. {
  120. printf("Yigin Bos Kopyalama Yapılamaz !");
  121. }
  122. while(Yigin.top>0){
  123.  
  124. YeniYigin.top+=1; // Yeni Yiginimiza veri eklicemiz için gosterdiği değeri arttırdık.
  125. // Bu deger yigit bosken sıfırdır.
  126. YeniYigin.veri[Yigin.top]=Yigin.veri[Yigin.top]; // Diger yigittaki elemani, yeni yigita kopyaladık.
  127. Yigin.top=Yigin.top-1; // Eleman ekledikten sonra
  128.  
  129. // referans olarak gondeerilen yigitin gosterdiği yeri azalttık.
  130. }
  131. return YeniYigin;
  132. }
  133.  
  134. /*** Bir yigitin bütün elemanlarını gösteren fonksiyon **/
  135. void tumunuGoster(struct yigin Yigin)
  136. {
  137. if(Yigin.top==0)
  138. printf("Bos Yigin Listelenemez..");
  139. while(Yigin.top>0)
  140. {
  141. printf("%d. elaman---> %d \n",Yigin.top,Yigin.veri[Yigin.top] );
  142. Yigin.top+=-1;
  143. }
  144. }
  145.  
  146. /*** Bir Yigiti tersten listeleyen fonksiyon **/
  147. void yigitiTersle(struct yigin Yigin){
  148. // Bu fonksiyon yigiti tersten yazdirir.
  149. int sayac =1;
  150. while(sayac<=Yigin.top){
  151. printf("Yigitin Tersten %d. elemani --> %d \n",sayac,Yigin.veri[sayac]);
  152. sayac++;
  153. }
  154. }
  155. /*** Bir fonksiyon yiginda eleman arar varsa o elamnin yigitta kacinci sirada oldugunu gosterir.
  156.  Eleman yoksa -1 donderir. **/
  157. int yiginElemanAra(struct yigin Yigin, int aranan){
  158. int arananSira=-1;
  159. while(Yigin.top>0)
  160. {
  161.  
  162. if(Yigin.veri[Yigin.top]==aranan)
  163. {
  164. arananSira=Yigin.top;
  165. }
  166. Yigin.top= Yigin.top-1; // -1 azalttık.
  167. }
  168. return arananSira;
  169. }
  170.  
  171. /*** Yigittaki En Kucuk Elemaninı dondurur. **/
  172. int yiginEnKucuk(struct yigin Yigin){
  173. int enKucuk =Yigin.veri[Yigin.top];
  174. while(Yigin.top>0)
  175. {
  176. if(Yigin.veri[Yigin.top]<enKucuk)
  177. {
  178. enKucuk=Yigin.veri[Yigin.top];
  179. }
  180. Yigin.top+=-1;
  181. }
  182. return enKucuk;
  183. }
  184. /*** Yigittaki En büyük Elemaninı dondurur. **/
  185. int yiginEnBuyuk(struct yigin Yigin){
  186. int enbuyuk =Yigin.veri[Yigin.top];
  187. while(Yigin.top>0)
  188. {
  189. if(Yigin.veri[Yigin.top]>enbuyuk)
  190. {
  191. enbuyuk=Yigin.veri[Yigin.top];
  192. }
  193. Yigin.top+=-1;
  194. }
  195. return enbuyuk;
  196. }
  197. ');


Author: Aytaç CİCİ


The provider of the ctrlv.it service takes no responsibility for the content of pastes published by users.