Страница 1 из 1

последний элемент очереди

Добавлено: 02 апр 2010, 14:52
Евгений Александрович
(В случае совпадения вводимого символа с последним элементом очереди выводить размер очереди.)
как это реализовать? вот код:

Код: Выделить всё

 struct queue{
char c;
queue *next;
 }*p,*head,*tail;

 void push(void);
 void pop(void);
 void show(void);

 int size=0;

 int main()
 {
	char key;
	int done=false;
	while(!done)
	{
		system("cls");
		show();
		printf("\nA)dd\nD)elete\nQ)uit\n");
		key=getchar();
		switch(toupper(key))
		{
		case 'A':
			push();
			break;
		case 'D':
			pop();
			break;
		case 'Q':
			done=true;
			break;
		}
	}
	return 0;
 }



 void push()
 {
	 printf("input:\n");
	 p=new queue;
	 scanf("%s",&p->c);
	 p->next=NULL;
	 if(head==NULL)
		 head=p;
	 else 
		 tail->next=p;
	tail=p;
	size++;
 }

 void pop()
 {
	 p=head;
	 if(head!=0)
	 head=head->next;
if(head==NULL)
tail=0;
delete p;
 }

 void show()
 {
	 p=head;
	 if(p==NULL)
		 printf("queue is empty\n");
	 else 
		 printf("\nQueue\n");
	 while(p)
	 {
		 printf("%c\n",p->c);
		 p=p->next;
	 }
 }

Re: последний элемент очереди

Добавлено: 02 апр 2010, 18:41
rrrFer

Код: Выделить всё

#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
struct queue{
	char c;
	queue *next;
}*p,*head,*tail;

void push(void);
void pop(void);
void show(void);

int size=0;

int main(){
	char key;
	int done=false;
	while(!done){
		system("cls");
		show();
		printf("\nA)dd\nD)elete\nQ)uit\n");
		key=getchar();
		switch(toupper(key)){
			case 'A':
				push();
				break;
			case 'D':
				pop();
				break;
			case 'Q':
				done=true;
				break;
		}
	}
	return 0;
}

void push(){
	printf("input:\n");
	p=new queue;
	scanf("%s",&p->c);
	p->next=NULL;
	if(head&&tail->c==p->c){
		printf("size: %d\n",size);
		system("pause");
		delete p;
	}
	else{
		if(head==NULL)
			head=p;
		else
			tail->next=p;
		tail=p;
		size++;
	}
}

void pop(){
	p=head;
	if(head!=0){
		size--;
		head=head->next;
	}
	else 
		tail=0;
	delete p;
}

void show(){
	p=head;
	if(p==NULL)
		printf("queue is empty\n");
	else 
		printf("\nQueue\n");
	while(p){
		printf("%c\n",p->c);
		p=p->next;
	}
}

Re: последний элемент очереди

Добавлено: 03 апр 2010, 22:41
Евгений Александрович
огномное спасибо