Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2012, 18:37   #1
fenix0093
 
Регистрация: 11.07.2012
Сообщений: 5
Сообщение Очередь (динамические структуры данных)

Помогите доработать функцию pop(), которая извлекает элементы из очереди.
Функция push() - добавляет элемент в очередь
В функции pop() необходимо реализовать извлечение. В цикле перейти от хвоста к голове.

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

typedef struct LIST{
	int data;
	struct LIST *next;
};

LIST *tail = NULL;
LIST *pr_ptr = NULL;
LIST *tek_ptr;

void push(int n){
	pr_ptr = tail;
	tail = (LIST*)malloc(sizeof(LIST));
	tail->data = n;
	tail->next = pr_ptr;
};

void pop(){
		
		if(tail == NULL)
			printf("empty\n");
		else
		{
			for(tek_ptr = tail; tek_ptr->next != NULL; tek_ptr = tek_ptr->next);
			printf("%d\n", tek_ptr->data);
			free(tek_ptr->next);
			tek_ptr = NULL;
		}
}

int main(){

	int n;
	scanf("%d", &n);
	push(n);
	pop();
	pop();

	return 0;
}
fenix0093 вне форума Ответить с цитированием
Старый 24.11.2012, 18:52   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А где у тебя голова очереди?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.11.2012, 18:57   #3
fenix0093
 
Регистрация: 11.07.2012
Сообщений: 5
По умолчанию

указателя на голову как такового нету.
голова равна NULL
нужно в функции pop в цикле for(tek_ptr=tail...) переместиться к голове и уже исходя из этого извлекать элементы

Последний раз редактировалось fenix0093; 24.11.2012 в 18:59.
fenix0093 вне форума Ответить с цитированием
Старый 24.11.2012, 19:24   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
			for(tek_ptr = tail; tek_ptr->next->next != NULL; tek_ptr = tek_ptr->next);
			printf("%d\n", tek_ptr->next->data);
			free(tek_ptr->next);
			tek_ptr->next = NULL;
Подходит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические структуры данных, списковые структуры (надо разобраться что делает программа) _4Alex4_ Помощь студентам 1 14.11.2012 07:39
динамические структуры данных ильшат9 Помощь студентам 1 12.09.2011 14:17
Моделирование работы принтера (очередь, динамические структуры) quearde Помощь студентам 0 27.05.2011 17:53
Динамические структуры данных doter Visual C++ 2 21.02.2011 12:23