ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Пример циклической очереди на Turbo C.
  #1  
Старый 28.03.2010, 19:20
IgrikX
Познающий
Регистрация: 13.08.2009
Сообщений: 92
Провел на форуме:
441444

Репутация: 1
По умолчанию Пример циклической очереди на Turbo C.

Есть у кого пример циклической очереди на С. Срочно нужен!
 
Ответить с цитированием

  #2  
Старый 28.03.2010, 21:57
greki_hoy
Познающий
Регистрация: 04.03.2010
Сообщений: 32
Провел на форуме:
32525

Репутация: 23
По умолчанию

2IgrikX - вот схема однонаправленной (не деки) кольцевой очереди

Код:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

typedef struct queue
{
	struct node *head;
	struct node *tail;
	size_t count;
} queue;

typedef struct node
{
	struct node *prev;
	struct node *next;
	void *data;
} node;

queue *new_queue(queue *q)
{
	q = malloc(sizeof(*q));
	q->count = 0;
	q->head = NULL;
	q->tail = NULL;
	return q;
}

typedef void item;

node *add_item_queue(queue *q, item *it, size_t size)
{
	node *n = malloc(sizeof(*n));
	if (q->count == 0)
	{
		q->head = n;
		n->next = NULL;
		n->prev = NULL;
	}
	else
	{
		n->next = q->head;
		n->prev = q->tail;
		q->tail->next = n;
	}
	q->tail = n;
	q->count++;
	n->data = malloc(size);
	memmove(n->data, it, size);
	return n;
}

node *get_queue_head(queue *q)
{
	return q->head;
}

int main(void)
{
	queue *q = NULL;
	node *n;
	q = new_queue(q);
	add_item_queue(q, "Phoenix", 8);
	add_item_queue(q, "Zombie", 7);
	add_item_queue(q, "Paradox", 8);
	n = get_queue_head(q);
	for (;;)
	{
		puts(n->data);
		n = n->next;
	}
}
несложно переделать в кольцевой дек
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
За месяц технологией Opera Turbo воспользовались 3 млн человек Andres Мировые новости 15 22.10.2009 20:55
Услуги-Цены детские option О Работе 17 10.05.2009 20:35
Описание .htaccess LoFFi Чужие Статьи 9 29.03.2008 05:14
Онлайн база номеров De1eT ICQ 154 07.01.2008 20:37



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ