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

做投标的在什么网站找信息网站建设英文参考文献

做投标的在什么网站找信息,网站建设英文参考文献,廊坊网站建设技术支持,做网站容易吧队列按照先进先出(FIFO,First In First Out)的原则管理数据。这意味着最先进入队列的元素会被最先移出,类似于排队等候服务的情况。队列通常有两个主要操作:入队(enqueue),将元素添加…

        队列按照先进先出(FIFO,First In First Out)的原则管理数据。这意味着最先进入队列的元素会被最先移出,类似于排队等候服务的情况。队列通常有两个主要操作:入队(enqueue),将元素添加到队列的尾部;出队(dequeue),从队列的头部移除元素。

        如果用顺序表实现队列,在删除队头数据时,需要后面的数据覆盖前面的数据,比较麻烦,所以采用链表,头删尾插代替出队和入队。但是如果用链表实现的话,寻找队尾入队还需要一直 ->next ,所以干脆我们就记录下头指针和尾指针方便头山尾插。

首先就是定义每个节点的结构体和定义队列的结构体:

struct QueueList {int val;struct QueueList* next;
};
struct Queue {struct QueueList* head;struct QueueList* tail;
};

        这里用QueueNode命名第一个结构体更好,因为我们要记录头尾指针,所以Queue结构体就有头尾两个指针。

接下来是初始化函数和销毁函数;

void QueueInit(struct Queue* list) {list->head = NULL;list->tail = NULL;
}
void QueueDes(struct Queue* list) {while (list->head!=list->tail){struct QueueList* next = list->head->next;free(list->head);list->head = next;}free(list->head);list->head = list->tail = NULL;
}

        初始化函数让list的头指针和尾指针都置为空,销毁函数,如果头尾指针相等,有两种情况,一种是空队列,这时 free(NULL) ,还可以是只有一个元素,头尾指针都指向这个元素,这时free掉,然后指针置空,所以不会有野指针或者free错误的情况。

然后是入队出队函数:

void QueuePushBack(struct Queue* list,int num) {if (list->head == list->tail && list->head == NULL) {list->head = list->tail = malloc(sizeof(struct QueueList));list->head->val = num;list->tail->next = NULL;}else if (list->head == list->tail) {list->tail = malloc(sizeof(struct QueueList));list->tail->val = num;list->tail->next = NULL;list->head->next = list->tail;}else {struct QueueList* tail_pre = list->tail;list->tail = malloc(sizeof(struct QueueList));list->tail->val = num;list->tail->next = NULL;tail_pre->next = list->tail;}
}
int QueueFrontPop(struct Queue* list) {struct QueueList* new_head = list->head->next;int val = list->head->val;free(list->head);list->head = new_head;return val;
}

        对于尾插函数,头尾指针相等时有可能是空队列也有可能是只创建了一个元素,所以要分开讨论,简单逻辑就是让尾节点的next指向新开辟的节点,然后更新尾指针使新开辟的节点变为尾指针,最后让尾节点的next置为NULL。

        对于头删Pop函数,就是先存头节点下一个节点的地址然后free掉头节点,更新头指针,返回数值。

最后是打印函数方便我们观察:

void QueuePrint(struct Queue* list) {struct QueueList* cur = list->head;while (cur != NULL) {printf("%d ", cur->val);cur = cur->next;}
}

这就是文章的全部内容,希望对你有所帮助,如有错误欢迎评论。 

http://www.yayakq.cn/news/29436/

相关文章:

  • 服务器可以做几个网站德国建设部网站
  • 邯郸网站建设推荐咨询唐山seo推广
  • 钱包网站开发怎么在别人网站上做锚文本链接
  • 做网站能赚钱吗表情包本周的重大新闻
  • 重庆网站维护制作网站图片如何做超链接
  • 手表大全网站室内设计公司排名全球
  • 如何诚信网站平台建设聚名网注册
  • 中英文网站后台新网页游戏排行
  • 网站设计公司建设人力资源公司排名
  • wordpress怎么添加企业网站免费二维码制作
  • 做网站美工广州网站建设 讯度网络
  • 我要在58上面做网站网站制作后续维护
  • 今鼎网站建设服装设计工作室
  • 保定附近的做网站价格网站开发费用是否资本化
  • 网站做抢红包活动广告语互联网保险有哪些
  • 西宁市城中区建设局网站广告设计公司公司vi设计
  • 张家港做网站的公司微软 网站开发
  • 开封网站建设流程安徽建设相关网站
  • 打开陕西建设厅网站上海文化传媒有限公司
  • 怎么在外国网站上找产品做跨境电商建设网站怎样提要求
  • 在线可以做翻译的网站吗ps网站设计怎么做
  • 修改网站搜索缩略图wordpress330
  • 巩义网站优化培训搭建网站的架构
  • 深圳住建厅官方网站p2p信贷网站建设
  • 网站地图网页的制作邯郸整站优化
  • 哪些网站是动态的查网站关键词工具
  • 文山做女主播的在哪个网站做安利能开个人网站
  • 莘县住房建设局网站营销型网站建设计划书
  • 小孩子做手工做游戏的网站专门做旅游尾单的网站
  • 自己做都网站怎么发朋友圈百度业务员联系电话