1. 1.
    0
    #include <stdio.h>
    2. include <stdlib.h>
    struct node
    {
    int a;
    struct node *next;
    };
    void push(struct node**head,int data)
    {
    struct node* neww=(struct node*)malloc(sizeof(struct node));
    if(*head==NULL)
    {
    neww->a=data;
    neww->next=NULL;
    *head=neww;
    }
    else
    {
    neww->a=data;
    neww->next=*head;
    *head=neww;
    }
    }
    void print_it(struct node*head)
    {
    if(head==NULL)
    puts("list empty");
    while(head!=NULL)
    {
    printf("%d->",head->a);
    head=head->next;
    }
    puts("n");
    }
    int print_rec(struct node*head)
    {
    if(head==NULL)
    {
    puts("n");
    return 0;
    }
    else
    {
    printf("%d->",head->a);
    head=head->next;
    print_rec(head);
    }
    return 1;

    }
    bool delete_it(struct node**head)
    {
    if(*head==NULL)
    {
    return false;
    }
    struct node*temp=*head;
    struct node*temp2=temp->next;
    free(temp);
    *head=temp2;
    return true;
    }
    bool search(struct node*head,int data)
    {
    while(head!=NULL)
    {
    if(head->a==data)
    return true;
    head=head->next;
    }
    return false;
    }
    int count_it(struct node*head)
    {
    int say=0;
    while(head!=NULL)
    {
    say++;
    head=head->next;
    }
    return say;
    }
    int count_rec(struct node*head)
    {
    int say=1;
    if(head==NULL)
    return 0;
    else
    {
    if(count_rec(head->next))
    say+=count_rec(head->next);
    }
    return say;
    }
    int sum(struct node*head)
    {
    int say=0;
    while(head!=NULL)
    {
    say+=head->a;
    head=head->next;
    }
    return say;
    }
    int max(struct node*head)
    {
    int say=0;
    if(head==NULL)
    {
    return -8765;
    }
    while(head!=NULL)
    {
    if((head->a)>(say))
    say=head->a;
    head=head->next;
    }
    return say;
    }
    int min(struct node*head)
    {
    int say=0;
    if(head==NULL)
    {
    return -8765;
    }
    say=head->a;
    while(head!=NULL)
    {
    if((head->a)<(say))
    say=head->a;
    head=head->next;
    }
    return say;
    }
    int main()
    {
    int key=1,data;
    int position;
    struct node* head=NULL;
    struct node*newhead=NULL;
    struct node*le;
    //le=003E40DO;
    while(key!=-1)
    {
    puts("n1-insertn2-deleten3-searchn4-print_recn5-print_itn6-count_recn7-count_itn8-maxn9-minn10-sumn-1-exitnsecim:");
    scanf("%d",&key);
    puts("n");
    switch (key)
    {
    case 1:
    puts("data:n");
    scanf("%d",&data);
    push(&head, data);
    printf("%d has append!n",data);
    break;
    case 2:
    if(delete_it(&head))
    puts("it has deleted!");
    else
    puts("list is empty!");
    break;
    case 3:
    puts("data:n");
    scanf("%d",&data);
    if(search(head, data))
    puts("it has found!");
    else
    puts("no find!");
    break;
    case 4:
    if(!print_rec(head))
    puts("list empty");
    break;
    case 5:
    print_it(head);
    break;
    case 6:
    printf("there is(are) %d data(s). with recursiven",count_rec(head));
    break;
    case 7:
    printf("there is(are) %d data(s). with iterativen",count_it(head));
    break;

    case 8:
    if(max(head)!=-8765)
    printf("max data is %d.n",max(head));
    else
    puts("list empty");
    break;
    case 9:
    if(min(head)!=-8765)
    printf("min data is %d.n",min(head));
    else
    puts("list empty");
    break;
    case 10:
    printf("sum of data is %d.n",sum(head));
    break;
    case 12:
    // addlist(&head,&newhead);
    break;
    case 13:
    //turnlist(&head);
    break;


    }
    }

    return 0;
    }
    Tümünü Göster
    ···
   tümünü göster