-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlinkedlist.c
More file actions
142 lines (119 loc) · 4.13 KB
/
linkedlist.c
File metadata and controls
142 lines (119 loc) · 4.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *isimler[] = {"Ahmet","Bilal","Cemal","Adem","Yasin","Esin","Emel","Mustafa","Ayten","Ceylan","Nesrin","Bekir","Emin","Hakan", "Hatice"};
int tutarlar[15] = {100,1000,600,650,350,270,410,750,600,1000,900,850,790,610,550};
typedef struct kayit {
char* isim;
int tutar;
struct node * next;
} kayit_t;
// olusturulacak üc listenin ilk nodelari
kayit_t *liste1 ;
kayit_t *liste2 ;
kayit_t *liste3 ;
// verilen kaydı listeye sondan ekler
void ekle1(kayit_t *liste, char *isim, int tutar) {
// verilen listenin sonuna git
kayit_t* simdiki = liste;
while (simdiki->next != NULL) {
simdiki = simdiki->next;
}
// yeni kayit olustur
kayit_t *yeni = (kayit_t*) malloc(sizeof(kayit_t));
yeni->isim = isim;
yeni->tutar = tutar;
// yeni kaydi listenin sonuna ekle
simdiki->next = yeni;
}
// verilen kaydi listeye sondan ekler
void ekle2(kayit_t **liste, char *name, int fatura) {
// yeni kayit olustur
kayit_t *yeni = (kayit_t*) malloc(sizeof(kayit_t));
yeni->isim = name;
yeni->tutar = fatura;
// listenin boş olup olmadığını ve liste başına ekleme yapılıp yapılmayacağını kontrol ediyor.
if (*liste == NULL || strcmp((*liste)->isim, yeni->isim) > 0){
yeni->next = *liste;
*liste = yeni;
} else {
kayit_t* simdiki = *liste;
while (simdiki->next != NULL) {
kayit_t *iter = simdiki->next;
if (strcmp(iter->isim, yeni->isim) >= 0) {
break;
}
simdiki = simdiki->next;
}
yeni->next = simdiki->next;
simdiki->next = yeni;
}
}
void ekle3(kayit_t **liste,char *name,int fatura){
// yeni kayit olustur
kayit_t *yeni = (kayit_t*) malloc(sizeof(kayit_t));
yeni->isim = name;
yeni->tutar = fatura;
// listenin boş olup olmadığını ve liste başına ekleme yapılıp yapılmayacağını kontrol ediyor.
if(*liste == NULL || (*liste)->tutar < yeni->tutar){
yeni->next = *liste;
*liste= yeni;
}else{
kayit_t* simdiki = *liste;
while (simdiki != NULL) {
kayit_t* iter = simdiki->next;
if (iter->tutar < yeni->tutar){
break;
}
simdiki= simdiki->next;
}
yeni->next = simdiki->next;
simdiki->next = yeni;
}
}
// verilen harfe ile başlayan listedeki kişileri basar.
void YazdirAd( kayit_t *liste,char hedefHarf) {
kayit_t *temp = (kayit_t*) malloc(sizeof(kayit_t));
temp = liste;
printf("Müşteri Adı\t Fatura Bedeli \n");
while(temp != NULL ) {
if((temp->isim[0]) == hedefHarf ){
printf("%s\t\t %d \n", temp->isim, temp->tutar);
}
temp = temp->next;
}
}
// verilen tutardan veya eşit olan fatura miktarına sahip listedeki kişileri basar.
void YazdirTutar( kayit_t *liste,int hedefTutar){
kayit_t *temp = (kayit_t*) malloc(sizeof(kayit_t));
temp = liste;
printf("Müşteri Adı\t Fatura Bedeli \n");
while(temp != NULL ){
if(temp->tutar >= hedefTutar){
printf("%s\t\t %d \n", temp->isim, temp->tutar);
}
temp = temp->next;
}
}
int main()
{
liste1 = (kayit_t*) malloc(sizeof(kayit_t));
liste1 = NULL;
for (int i = 0; i < 15; i++) {
ekle1(&liste1, isimler[i], tutarlar[i]);
}//verilen kayıtları listeye olduğu gibi ekler
liste2 = (kayit_t*) malloc(sizeof(kayit_t));
liste2 = NULL;
for (int i = 0; i < 15; i++) {
ekle2(&liste2, isimler[i], tutarlar[i]);
}//verilen kayıtları listeye olduğu isme göre ekleyerek sıralar
liste3 = (kayit_t*) malloc(sizeof(kayit_t));
liste3=NULL;
for (int i = 0; i < 15; i++) {
ekle3(&liste3, isimler[i], tutarlar[i]);
}//verilen kayıtları listeye olduğu fatura miktarına göre ekleyerek sıralar
YazdirAd(liste2,'A');
printf(" \n");
YazdirTutar(liste3,900);
return 0;
}