当前位置: 首页 > news >正文

经营范围网站开发运营网店推广的重要性

经营范围网站开发运营,网店推广的重要性,企业管理咨询类公司,如何确认建设银行网站不是假的队列可以理解为单链表的阉割版&#xff0c;相比单链表而言&#xff0c;队列只有在添加和删除元素上和单链表有区别 一.队列的链式实现&#xff1a; 1.图解&#xff1a; 2.代码&#xff1a; #include<stdio.h> ​ typedef struct LinkNode //链式队列结点 {int data;st…

队列可以理解为单链表的阉割版,相比单链表而言,队列只有在添加和删除元素上和单链表有区别


一.队列的链式实现:

1.图解:

2.代码:

#include<stdio.h>
​
typedef struct LinkNode //链式队列结点 
{int data;struct LinkNode *next;
}LinkNode;
​
typedef struct //链式队列 
{LinkNode *front; //队头指针LinkNode *rear; //队尾指针 
}LinkQueue;
​
int main()
{return 0;
}

二.初始化队列:

1.带头结点:

a.图解:

b.代码:
#include<stdio.h>
#include<stdlib.h>
​
typedef struct LinkNode //链式队列结点 
{int data;struct LinkNode *next;
}LinkNode;
​
typedef struct //链式队列 
{LinkNode *front; //队头指针LinkNode *rear; //队尾指针 
}LinkQueue;
​
//初始化队列(带头结点)
void InitQueue(LinkQueue &Q)
{//初始化时,front和rear都指向头结点Q.front = Q.rear = (LinkNode *)malloc(sizeof(LinkNode));//malloc用于申请一个头结点 Q.front -> next=NULL; //头指针下一个元素为NULL,因为一开始什么都没有 
} 
​
//判断队列是否为空
bool IsEmpty(LinkQueue Q)
{if( Q.front==Q.rear ) //也可以这么判断:如果Q.front -> next==NULL,此时队列为空 {return true; //代表队列为空 }else{return false; //代表队列不为空 }
} 
​
int main()
{LinkQueue Q;//声明一个队列InitQueue(Q); //初始化队列//后续操作。。。 return 0;
}

2.不带头结点:

a.图解:

b.代码:
#include<stdio.h>
​
typedef struct LinkNode //链式队列结点 
{int data;struct LinkNode *next;
}LinkNode;
​
typedef struct //链式队列 
{LinkNode *front; //队头指针LinkNode *rear; //队尾指针 
}LinkQueue;
​
//初始化队列(不带头结点)
void InitQueue(LinkQueue &Q)
{//初始化时,front和rear都指向NULLQ.front=NULL;Q.rear=NULL; 
}
​
//判断队列是否为空
bool IsEmpty(LinkQueue Q)
{if( Q.front==NULL ) //只需要看头指针是否等于NULL即可,也可以看Q.rear是否为NULL,是的话队列为空 {return true; //代表队列为空,头指针为NULL,代表没有头指针,自然队列为空 }else{return false; //代表队列不为空 }
}  
​
int main()
{LinkQueue Q;//声明一个队列InitQueue(Q); //初始化队列//后续操作。。。return 0;
}

三.入队操作:

1.带头结点:

a.图解:

b.代码:
#include<stdio.h>
#include<stdlib.h>
​
typedef struct LinkNode //链式队列结点 
{int data;struct LinkNode *next;
}LinkNode;
​
typedef struct //链式队列 
{LinkNode *front; //队头指针LinkNode *rear; //队尾指针 
}LinkQueue;
​
//初始化队列(带头结点)
void InitQueue(LinkQueue &Q)
{//初始化时,front和rear都指向头结点Q.front = Q.rear = (LinkNode *)malloc(sizeof(LinkNode));//malloc用于申请一个头结点 Q.front -> next=NULL; //头指针下一个元素为NULL,因为一开始什么都没有 
} 
​
//判断队列是否为空
bool IsEmpty(LinkQueue Q)
{if( Q.front==Q.rear ) //也可以这么判断:如果Q.front -> next==NULL,此时队列为空 {return true; //代表队列为空 }else{return false; //代表队列不为空 }
} 
​
//新元素入队(带头结点)
void EnQueue(LinkQueue &Q,int x)//只是让x入队,不改变x的值,所以无需&
{LinkNode *s = (LinkNode *)malloc(sizeof(LinkNode)); //用malloc申请一个新结点用来存要入队的元素 s->data = x; //把新插入的元素x放入新结点中 s->next = NULL; //由于队列入队的操作是在表尾的位置进行,因此新插入的结点是队列的最后一个结点,后面就是NULL Q.rear->next = s;/*由于一开始rear指针指向的是当前的表尾结点,而新插入的新结点应该连到表尾结点之后,所以要把rear指向的结点next指针域指向新结点s */Q.rear = s; //修改表尾指针指向新添加的元素,新添加的元素就是表尾元素 
} 
​
int main()
{LinkQueue Q;//声明一个队列InitQueue(Q); //初始化队列//后续操作。。。 return 0;
}

2.不带头结点:

a.图解:

b.代码:
#include<stdio.h>
#include<stdlib.h> 
​
typedef struct LinkNode //链式队列结点 
{int data;struct LinkNode *next;
}LinkNode;
​
typedef struct //链式队列 
{LinkNode *front; //队头指针LinkNode *rear; //队尾指针 
}LinkQueue;
​
//初始化队列(不带头结点)
void InitQueue(LinkQueue &Q)
{//初始化时,front和rear都指向NULLQ.front=NULL;Q.rear=NULL; 
}
​
//判断队列是否为空
bool IsEmpty(LinkQueue Q)
{if( Q.front==NULL ) //只需要看头指针是否等于NULL即可,也可以看Q.rear是否为NULL,是的话队列为空 {return true; //代表队列为空,头指针为NULL,代表没有头指针,自然队列为空 }else{return false; //代表队列不为空 }
}  
​
//新元素入队(不带头结点)
void EnQueue(LinkQueue &Q,int x)
{LinkNode *s = (LinkNode *)malloc(sizeof(LinkNode));//用malloc申请一个新结点用来存要入队的元素 s->data = x;//把新插入的元素x放入新结点中s->next = NULL;//由于队列入队的操作是在表尾的位置进行,因此新插入的结点是队列的最后一个结点,后面就是NULL if( Q.front==NULL ) //在空队列中插入第一个元素,插入第一个元素时Q.front为NULL,因为刚开始front和rear都指向NULL { //如果队列为空,那么插入的元素就是队列第一个元素 //修改队头和队尾指针 Q.front = s;Q.rear = s;}else{Q.rear->next = s;//新结点插入到rear结点之后 Q.rear = s;//修改rear指针 }
} 
​
int main()
{LinkQueue Q;//声明一个队列InitQueue(Q); //初始化队列//后续操作。。。return 0;
}

四.出队操作:

1.带头结点:

a.图解:

不是最后一个元素出队:

最后一个元素出队:

b.代码:
#include<stdio.h>
#include<stdlib.h>
​
typedef struct LinkNode //链式队列结点 
{int data;struct LinkNode *next;
}LinkNode;
​
typedef struct //链式队列 
{LinkNode *front; //队头指针LinkNode *rear; //队尾指针 
}LinkQueue;
​
//初始化队列(带头结点)
void InitQueue(LinkQueue &Q)
{//初始化时,front和rear都指向头结点Q.front = Q.rear = (LinkNode *)malloc(sizeof(LinkNode));//malloc用于申请一个头结点 Q.front -> next=NULL; //头指针下一个元素为NULL,因为一开始什么都没有 
} 
​
//判断队列是否为空
bool IsEmpty(LinkQueue Q)
{if( Q.front==Q.rear ) //也可以这么判断:如果Q.front -> next==NULL,此时队列为空 {return true; //代表队列为空 }else{return false; //代表队列不为空 }
} 
​
//队头元素出队(带头结点)
bool DeQueue(LinkQueue &Q,int &x) //最终x会变为要删除的元素,所以需要& 
{if( Q.front==Q.rear ){return false;//空队,就无法出队即删除元素 }//此时队列不为空//Q.front为头结点 LinkNode *p = Q.front->next; //让p指针指向要删除的结点,对于带头结点的队列来说就是要删除头结点的后一个结点 x = p->data; //用变量x返回队头元素即要删除的元素 Q.front->next = p->next; //修改头结点的next指针if( Q.rear==p ) //此次是最后一个结点出队,最终就是空队列即Q.rear=Q.front {Q.rear=Q.front; //修改rear指针 } free(p); //释放结点空间return true; 
} 
​
int main()
{LinkQueue Q;//声明一个队列InitQueue(Q); //初始化队列//后续操作。。。 return 0;
}

2.不带头结点:

a.图解:

b.代码:
#include<stdio.h>
#include<stdlib.h>
​
typedef struct LinkNode //链式队列结点 
{int data;struct LinkNode *next;
}LinkNode;
​
typedef struct //链式队列 
{LinkNode *front; //队头指针LinkNode *rear; //队尾指针 
}LinkQueue;
​
//初始化队列(不带头结点)
void InitQueue(LinkQueue &Q)
{//初始化时,front和rear都指向NULLQ.front=NULL;Q.rear=NULL; 
}
​
//判断队列是否为空
bool IsEmpty(LinkQueue Q)
{if( Q.front==NULL ) //只需要看头指针是否等于NULL即可,也可以看Q.rear是否为NULL,是的话队列为空 {return true; //代表队列为空,头指针为NULL,代表没有头指针,自然队列为空 }else{return false; //代表队列不为空 }
}  
​
//队头元素出队(不带头结点)
bool DeQueue(LinkQueue &Q,int &x)
{if( Q.front==NULL ){return false; //空队 }LinkNode *p=Q.front; //p指向此次出队的结点即front指针指向的结点出队 x = p->data; //用变量x返回队头元素 Q.front = p->next; //由于没有头结点,所以每次有队头元素出队后都需要修改front指针的指向 if( Q.rear==p ) //此次是最后一个结点出队,最终就是空队列 {Q.front=NULL; //front指向NULL Q.rear=NULL; //rear指向NULL  } free(p); //释放结点空间 return true; 
} 
​
int main()
{LinkQueue Q;//声明一个队列InitQueue(Q); //初始化队列//后续操作。。。return 0;
}

五.队列满的条件:


六.统计队列的长度:

思路:

从队头结点开始依次往后遍历,统计总共有多少个结点,显然时间复杂度为O(n)。


七.总结:


http://www.zhongyajixie.com/news/1426.html

相关文章:

  • 公司网站费用怎么做会计分录百度指数官网首页
  • 烟台H5网站设计公司昆明网站seo公司
  • 深圳企业网站建设与设计制作2023年8月新冠又来了
  • 网站建设做网站广州网站设计制作
  • 响应式网站什么意思金花关键词工具
  • 学校网站开发建设合同百度seo还有前景吗
  • 考幼师证去哪个网站做试题百度怎么注册自己的店铺
  • 如何做网站的登录注册微信软文范例100字
  • 广州外贸网站建站广州排前三的seo公司
  • 做视频怎样传到网站关键词网站推广
  • 来年做哪个网站能致富网站ip查询
  • 做电话销售需要的网站企业网站建设需求分析
  • 创建5a 网站建设要求正规微商免费推广软件
  • 网络推广的网站最新新闻摘抄
  • 棋牌网站开发多少钱建立网站的几个步骤
  • 深圳网站建设代理商网站优化排名公司哪家好
  • 用织梦怎么做网站百度关键词如何优化
  • 福田网站制作郑州本地seo顾问
  • 网站模板下载软件网络营销有哪些模式
  • 自己做的网站变成二维码javacps推广是什么意思
  • 如何增加企业网站被收录的几率seo指什么
  • 织梦网站标题被改网站推广方案模板
  • 企业免费网站建设模板百度搜索资源平台官网
  • 重庆建设工程质量检测监管平台郑州seo招聘
  • 做户外灯批发什么b2b网站好百度一下马上知道
  • 怎么样做深网的网站宁波seo外包服务
  • 建设银行粤通卡网站网络优化app
  • 网站建设招标 报告企业如何注册自己的网站
  • 网站建网站建设企业电话搜索引擎广告图片
  • dedecms医院网站wap模板(橙色)4512345百度热搜的含义