十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
q.push(m); // queue是C++STL模板库的东西,需要使用push来插入元素,详细信息你可以参考MSDN来了解其使用及内容。
在旺苍等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站设计、网站建设、外贸网站建设 网站设计制作按需网站制作,公司网站建设,企业网站建设,成都品牌网站建设,营销型网站,成都外贸网站建设公司,旺苍网站建设费用合理。
这是链表的,部分是c++的输入输出,改一下cout,cin换成printf,scanf就行了
#includestdio.h
#includeiostream
#define MAX 30
using namespace std;
typedef struct pqueue
{
char str[MAX];
int priority;
pqueue* next;
}pqueue;
int enqueuepriority(pqueue *pq, char str[MAX], int priority)
{
if(priority0)
{
pqueue *p=(pqueue*)malloc(sizeof(pqueue));
for(int i=0;iMAX;i++)
p-str[i]=str[i];
p-priority=priority;
p-next=pq-next;
pq-next=p;
return 1;
}
else return 0;
}
char* dequeue(pqueue *pq)
{
pqueue *p;
if(pq-next!=NULL)
{
p=pq-next;
pq-next=pq-next-next;
return p-str;
}
else return "";
}
int main()
{
cout"(1) Enqueue (single)"endl;
cout"(2) Enqueue (multiple)"endl;
cout"(3) Dequeue (single)"endl;
cout"(4) Dequeue (all)"endl;
cout"(5) Quit"endl;
int re=0,t=1;
static char* str=new char[MAX];
int priority=0;
pqueue *pq=(pqueue*)malloc(sizeof(pqueue));
pq-next=NULL;
while(re!=5)
{
cout"Choose an action:";
cinre;
switch(re)
{
case 1:
cout"Enter a name to save and its priority"endl;
scanf("%s%d",str,priority);
if(enqueuepriority(pq,str,priority))
break;
else
{
cout"INPUT ERROR!!"endl;
break;
}
case 2:
cout"Enter names to save and their priority. Enter “done” to quit"endl;
do
{
scanf("%s",str);
if(strcmp(str,"done")!=0)
{
scanf("%d",priority);
enqueuepriority(pq,str,priority);
}
else t=0;
}while(t==1);
break;
case 3:
str=dequeue(pq);
if(str=="")
cout"NULL"endl;
else
printf("%s\n",str);
break;
case 4:
while(pq-next!=NULL)
{
printf("%s\n",dequeue(pq));
}
break;
case 5: break;
default:
cout"INPUT ERROR!!"endl;
break;
}
}
delete [] str;
return 0;
}
#include stdlib.h // malloc, free
#include "queue.h"
struct queue * queue_create(void)
{
struct queue *q = (struct queue *)malloc(sizeof(struct queue));
if (q == NULL) { // malloc failed
return NULL;
}
q-head = dnode_create();
q-tail = dnode_create();
q-head-next = q-tail;
q-tail-prev = q-head;
q-size = 0;
return q;
}
void queue_destroy(struct queue *q)
{
if (q != NULL) {
while (!queue_isempty(q)) {
queue_dequeue(q);
}
dnode_destroy(q-head);
dnode_destroy(q-tail);
free(q);
q = NULL;
}
}
int queue_front(const struct queue * const q)
{
return q-tail-prev-data;
}
void queue_enqueue(struct queue * const q, const int e)
{
struct dnode *dn = dnode_create();
dn-data = e;
struct dnode *tmp = q-head-next;
q-head-next = dn;
dn-prev = q-head;
dn-next = tmp;
tmp-prev = dn;
q-size += 1;
}
int queue_dequeue(struct queue * const q)
{
struct dnode *dn = q-tail-prev;
struct dnode *tmp = dn-prev;
tmp-next = q-tail;
q-tail-prev = tmp;
int ret = dn-data;
dnode_destroy(dn);
q-size -= 1;
return ret;
}
int queue_size(const struct queue * const q)
{
return q-size;
}
int queue_isempty(const struct queue * const q)
{
return q-size 0 ? 0 : 1;
}
//////////////////////
static void bubble_sort(int * const a, const int n)
{
int swapped = 1;
while (swapped) {
swapped = 0;
for (int i = 1; i n; i++) {
if (a[i] a[i - 1]) {
int tmp = a[i];
a[i] = a[i - 1];
a[i - 1] = tmp;
swapped = 1;
}
}
}
}
这样的话应该符合你的要求:
#includestdio.h
void add(int queue[],int x);
int Top(int queue[]);
void del(int queue[]);
int end=0;
int main()
{
int n;
scanf("%d",n);//将要入队列n个元素
int queue[1000];
for(int i=1;i=n;i++)//输入n个元素
{
add(queue,i);//将i加入队列
}
//验证加入队列的元素,将队列中的元素按照输入的顺序输出:
for( i=1;i=n;i++)
{
printf("%d ",Top(queue));//Top函数返回队头元素
del(queue);//删除队头元素
}
//验证输出已经出队列后的队列(数组)元素:
printf("\n");
for(i=1;i=n;i++)
printf("%d ",queue[i]);
printf("\n");
return 0;
}
void add(int queue[],int x)
{
queue[++end]=x;
}
int Top(int queue[])
{
return queue[1];//注意,这里的函数始终return queue[1];这里是和将普通数组中的元素输出最大的不同之处。!!!!!!
}
void del(int queue[])
{
for(int i=2;i=end;i++)
{
queue[i-1]=queue[i];
}
queue=0;//将删除后的地方置0
end--;
}
可以定义
不过q还是queue类型
所以 q和"END"比较肯定是不行的
你可以试试
q.top()!="END"
也就是queue的元素
int Succ (int Value, Queue Q )
Value 是 要插到哪里去
如果value太大,大于队列的容量,就让他插到队列的头去,重头再来一遍。懂了没?