
02.07.2013, 21:17
|
Прохожий
|
|
Регистрация: 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;
}
|