rendered paste body/* Simple single-linked list example program */
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#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 <n ; i++)
for (j=i+1; j < n-1; j++)
{
if (m[j] > 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();
}