Показать сообщение отдельно
  #10  
Старый 02.07.2013, 21:17
flasher167 flasher167 вне форума
Прохожий
 
Регистрация: 02.07.2013
Сообщения: 9
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Значит напиши на си, скидывай сюда, переведут тебе.
Код:
 
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
#include <malloc.h>
 
#define QUE struct que /* tip dannih */
QUE
{
    int info;
    QUE *next;
};
int x;
void insert(QUE **q, int item);
void display(QUE * q);
QUE * create_list();
 
QUE *q=NULL; /* ob'yavlenie spiska */ 
/* ======= funktsiya vivoda spiska ====== */
void display(QUE * q) 
{
    QUE * current = q; 
    printf("\nLIST=");
    if (current)
    {
        while(current)
        {
            printf("%d-->", current->info);
            current = current ->next;
        }
        printf("NULL");
    }
    else
        printf("pustoy");
    printf("\n");
}
/* ====== funktsiya obrabotki spiska ====== */
void add_odd(QUE **q) 
{
    QUE * current = *q;
    QUE * new_node;
    while(current)
    {
        if(current->info < 0)
        {
            new_node=(QUE*) malloc (sizeof (QUE));
            new_node->info = x;
            if (current)
            {
                new_node->next=current->next;
                current->next=new_node;
            }
            else
            {
                *q=new_node;
                (*q)->next=NULL;
            }
        }
        current = current ->next;
    }
}
/* ====== funktsiya sozdaniya spiska ====== */
QUE * create_list() 
{
    QUE * list=NULL;
    int done=1, info, c;
    printf("Creation of list:\n");
    
    while(done)
    {
        printf("Add new element? (Y/N) ore (E)");
        c=getch();
        c=toupper(c);
        switch(c)
        {
        case 'Y':printf("\n Element=");
            scanf("%d", &info);
            insert(&q, info);
            break;
 
        case 'N': 
            done=0;
            break;
 
        case 'E':
            printf("\n X=");
            scanf("%d", &x);
            break;
        }
    }
    return (list);
}
/* === funktsiya dobavleniya elementa k spisku === */
void insert (QUE **q, int item) 
{
    QUE *current=*q;
    QUE *previous=0;
    QUE *new_node;
    QUE *x;
    while(current)
    {
        previous=current;
        current=current->next;
    }
    new_node=(QUE*) malloc (sizeof (QUE));
    new_node->info=item;
    if (previous)
    {
        new_node->next=previous->next;
        previous->next=new_node;
    }
    else
    {
        *q=new_node;
        (*q)->next=0;
    }
}
 
int main()
{
    create_list();
    display(q);
    add_odd(&q);
    if(q)
        display(q);
    getch();
    return 0;
}
Ответить с цитированием