Рубин
Массив
1 - Массив выделяет пространство автоматически
2 - Его размер не может быть изменен
3 - Его нельзя переназначить
4 - sizeof (имя массива) дает количество байтов, занятых массивом.
Указатель
1 - явно назначен для указания на выделенное пространство.
2-Его размер можно изменить с помощью realloc ().
3-указатель можно переназначить.
4-sizeof (p) возвращает количество байтов, используемых для хранения переменной-указателя p.
для получения дополнительной информации об этом посещении
Рафаэль
/ * программа с циклической очередью, использующая указатель * /
/ * каждый случай проверяется и отображается в программе * /
#include <iostream>
с использованием пространства имен std;
struct node
{
int data;
узел * ссылка;
};
class cirque
{
частный: узел * спереди, * сзади;
int count;
общественные: цирк ();
void push (int n);
void pop ();
void display ();
~ цирк ();
};
cirque :: cirque ()
{
спереди = сзади = NULL;
count = 0;
}
void cirque :: push (int n)
{
узел * темп;
temp = новый узел;
if (temp == NULL)
{
cout << "памяти меньше";
возвращение;
}
temp-> data = n;
если (перед == NULL)
{
перед = зад = темп;
}
еще
{
задняя-> ссылка = темп;
задний = задний-> ссылка;
}
задний-> ссылка = передний;
count ++;
}
void cirque :: pop ()
{
if (front == NULL)
{
cout << "ciccular очередь пуста";
возвращение;
}
узел * темп;
темп = перед;
cout << endl << "удаленный элемент - это" <<front-> data;
if (count> 0)
front = temp-> ссылка;
задняя-> ссылка = передняя;
считать--;
удалить темп;
}
void cirque :: display ()
{
if (front == NULL)
{
cout << endl << "очередь пуста";
возвращение;
}
int local = count;
узел * темп;
темп = перед;
cout << endl << "элементы очереди есть";
while (локально)
{
cout << "" <<temp-> data;
temp = temp-> ссылка;
местный--;
}
}
cirque :: ~ cirque ()
{
if (front == NULL)
{
cout << endl << "память не используется";
возвращение;
}
узел * темп;
int n = 0;
в то время как (передняя-> ссылка! = задняя-> ссылка)
{
темп = передняя;
передняя = передняя-> ссылка;
удалить темп;
cout << endl << ++ n << "" << "удалено";
}
}
int main ()
{
cirque q;
q.push (1);
q.display ();
q.push (2);
q.display ();
q.push (3);
q.display ();
q.
толкать (4);
q.display ();
q.pop ();
q.pop ();
возврат 0;
}
/ * вторая программа, использующая массив * /
#include <iostream>
using namespace std;
#define MAX 7 / * для размера массива * /
class cirq
{
private: int arr [MAX];
int передний, задний, счетчик; / * подсчитать, чтобы узнать номер элемента. Присутствует в массиве. * /
Public:
cirq ();
void push (int n);
void pop ();
void display ();
~ cirq ();
};
cirq :: cirq ()
{
спереди = сзади = -1;
count = 0;
}
void cirq :: Push (int n)
{
if (count <MAX)
{
if (front == - 1)
{
front = rear = 0;
}
else if (rear == MAX-1) / * если задняя часть находится в максимальном положении, то переместить ее в начало * /
rear = 0;
иначе
задний ++;
arr [тыл] = n;
count ++;
}
else
{
cout << endl << "очередь заполнена, не входить сейчас";
}
}
void cirq :: pop ()
{
if (count> 0)
{
cout << endl << "удаленный элемент" << arr [front];
if (front == MAX-1) / * если передняя часть находится в максимальном положении, то перенести ее в начало * /
front = 0;
else
front ++;
считать--;
}
else
cout << endl << "круговая очередь пуста";
}
void cirq :: display ()
{
int local = count;
int front1 = front;
if (local <0) / * если в quque нет элемента * /
{
cout << endl << "круговая очередь пуста";
}
else
{
cout << endl << "элементы круговой очереди:";
в то время как (локально)
{
cout << endl << arr [front1];
if (front1 == MAX-1) / * если передняя часть находится в максимальной позиции, то перенести ее в начало * /
front1 = 0;
иначе
front1 ++;
местный--;
}
}
}
cirq :: ~ cirq ()
{
}
int main ()
{
cirq q;
q.push (1);
q.push (2);
q.push (3);
q.push (4);
q.push (5);
q.push (6);
q.push (7);
q.display ();
q.pop ();
q.display ();
q.push (8);
q.display ();
q.push (9);
q.display ();
возврат 0;
}
Лью
/ * Программа циклической очереди с использованием массива на C * /
# include
#include
# define MAX 5
int cqueue_arr [MAX];
int front = -1;
int сзади = -1;
main ()
{
int выбор;
в то время как (1)
{
printf ("1.Insertn");
printf ("2.Удалить");
printf ("3.Displayn");
printf ("4.Quitn");
printf ("Введите свой выбор:");
scanf ("% d", & выбор);
переключатель (выбор)
{
случай 1:
Вставить ();
перерыв;
случай 2:
Del ();
перерыв;
случай 3:
Display ();
перерыв;
случай 4:
выход (1);
по умолчанию:
Printf («Неправильный выбор»);
} / * Конец переключателя * /
} / * Конец while * /
} / * Конец main () * /
insert ()
{
int added_item;
if ((передняя == 0 && задняя == МАКС-1) || (передняя == задняя + 1))
{
printf ("Переполнение очереди n");
возвращение;
}
if (front == -1) / * Если очередь пуста * /
{
front = 0;
задний = 0;
}
else
if (rear == MAX-1) / * задняя часть находится на последней позиции в очереди * /
rear = 0;
иначе
задний = задний + 1;
printf ("Ввести элемент для вставки в очередь:");
scanf ("% d", & добавленный_элемент);
cqueue_arr [сзади] = добавленный_элемент;
} / * Конец вставки () * /
del ()
{
if (front == -1)
{
printf ("Queue Underflown");
возвращение ;
}
printf («Из очереди удален элемент:% dn», cqueue_arr [front]);
if (front == back) / * в очереди только один элемент * /
{
front = -1;
задний = -1;
}
else
if (front == MAX-1)
front = 0;
иначе
фронт = фронт + 1;
} / * Конец del () * /
display ()
{
int front_pos = front, rear_pos = rear;
if (front == -1)
{
printf ("Очередь пуста");
возвращение;
}
printf ("Элементы очереди: n");
если (front_pos