/* Simple single-linked list example program */ #include #include #include #define max_s 25 typedef char vardas[max_s]; struct node { /* basic list structure */ vardas name; int age; struct node * next; }; node * add(node *p, int d, vardas n) { node * newe; newe = ( node *) malloc(sizeof(node )); newe->age = d; strcpy(newe->name, n); newe->next = p; p = newe; return p; } node *pop(node *p, int * d) { node * old = p; *d = p->age; p = p->next; free(old); return p; } node *del(node *p, int d) { node *tmp=NULL; int data; vardas _tmp_s; while (p) { p = pop(p, &data); if (d != data) {tmp = add(tmp, data, _tmp_s); } p = tmp; return p; } } int sort(int m[], int n) { int i, j; int tmp; for (i=0; i m[i]) { tmp = m[j]; m[j] = m[i]; m[i] = tmp; } } for (i=0; i < n; i++) { printf("%d", m[i]); } } void print(node *p) { int n=0; int m[max_s]; while (p) { printf("%s - %d\n", p->name, p->age); m[n] = p->age; p = p->next; n++; } sort(m, n); } /* main function */ int main() { vardas _name; int age; int n=0; int i=0; node *p = NULL; printf("PART I: SIMPLE DATA ENTER\n"); do { printf("Student name:"); scanf("%s", &_name); printf("Student age:"); scanf("%d", &age); printf("\n"); if ((age != 0) && (strcmp(_name, "quit"))) { p = add(p,age, _name); n++; } } while (age != 0 && strcmp(_name, "quit")); if (n>0) { printf("PART II: LISTING AND SORTING\n"); printf("DATA:\n"); print(p); getchar(); } getchar(); }