链队列
来源:互联网 发布:zoom会议软件注册 编辑:程序博客网 时间:2024/05/22 13:13
/**头结点:如果没有头结点那么插入和删除就会多一种情况要处理。//这里如果没有头结点,当root开始为空,导致新建第一个结点找不到。*/#include<iostream>using namespace std;struct node {int data;node *link;};//声明单链表头结点node *first;/**单链表的查找:查找第k个结点(可包括头结点,为第0个)*/node *find(node *first,int k) {if(!first||k<0) {printf("find msg:error first==NULL||k<=0\n");return NULL;}node *temp=first;int i=0;while(temp&&i<k) {temp=temp->link;i++;}if(temp&&i==k) {printf("find msg:success\n");return temp;}printf("find msg:error find no\n");return NULL;}/**插入到第k个结点位置(k>=1)*/bool insert(node *first,int k,int data) {if(k<1) {printf("insert msg:error k<1\n");return false;}node *node_k=find(first,k-1);if(!node_k) {printf("insert msg:error node_k==NULL\n");return false;}node *newnode=new node();newnode->data=data;node *node_k_next=node_k->link;node_k->link=newnode;newnode->link=node_k_next;printf("insert msg:seccess\n");return true;}/**删除第k个结点*/bool del(node *first,int k) {node *node_temp=find(first,k);if(!node_temp) {printf("del msg:error !node_temp\n");return false;}node *node_k_pre=find(first,k-1);if(!node_k_pre) {printf("del msg:error node_k==NULL\n");return false;}node *node_k=node_k_pre->link;if(!node_k->link) {delete node_k;//注意这里释放了node_k,node_k_pre=NULL,否则成野指针node_k_pre->link=NULL;printf("del msg:success\n");return true;}node *node_k_next=node_k->link;node_k_pre->link=node_k_next;delete node_k;printf("del msg:seccess\n");return true;}/////////////////////////////////////////////////////////////////链队列node *get_rear() {node *temp=first;while(temp->link) {temp=temp->link;}return temp;}bool empty() {if(!first->link)return true;return false;}int front() {if(!empty()) {return first->link->data;}return -1;}void enqueue(int data) {node *n=new node();n->data=data;node *last=get_rear();last->link=n;printf("insert seccess data=%d\n",data);}void dequeue() {del(first,1);}int main() {//保证有头结点first=new node();enqueue(1);enqueue(2);enqueue(3);enqueue(4);enqueue(5);while(!empty()) {printf("data=%d\n",front());dequeue();}return 0;}
阅读全文
0 0
- 队列-循环队列/链队列
- 队列,链队列,循环队列
- 队列,链队列,循环队列
- 队列--链表队列
- 队列之链队列
- 08.队列.链队列
- 队列,链队列,链式存储的队列
- 队列---循环队列与链队列比较
- 顺序队列 - 循环队列 - 链队列
- 链队列
- 链队列
- 链队列
- 链队列
- 链队列
- 链队列
- 链队列
- 链队列
- 链队列
- GoldenDream-十月
- TV颜色空间—YUV,YIQ,YCbCr
- 我的“游戏职业”生涯03
- Seetaface 01 Seetaface win10 vs2015编译(cmake自动配置,可选mfc界面)
- 洛谷 P1119 灾后重建(Floyd)
- 链队列
- bzoj 1096: [ZJOI2007]仓库建设(斜率DP)
- 应用层协议:HTTP与HTTPS协议详解、二者的区别
- idea优点
- Eclipse快捷键总结
- Ionic3学习笔记(二)主题化
- 深圳惠群数据的面试题
- Ionic3学习笔记(三)禁止横屏
- <c语言经典100例>c22 规律题