博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
链栈和链队列的建立及基本操作
阅读量:6081 次
发布时间:2019-06-20

本文共 3025 字,大约阅读时间需要 10 分钟。

链栈:c++版

1 #include
2 #include
3 using namespace std; 4 struct Node{ 5 int value; //定义栈中的数据类型为 int 型 6 Node *next; 7 }; 8 Node * build_stack(){ //建立空的链栈的函数 9 Node *p=(Node*)malloc(sizeof(Node));10 p->next=NULL;11 return p;12 }13 bool stack_empty(Node *a){ //判断栈是否为空的函数14 if((a->next)==NULL) return true; //如果下一个地址为空,那么说明栈为空15 return false;16 }17 int stack_size(Node *a){ //获取栈的大小的函数18 Node *p=a->next;19 int length_size=0;20 while(p!=NULL){21 length_size++;22 p=p->next;23 }24 return length_size;25 }26 bool push_stack(Node *a,int value){ //将值为value的元素压入栈27 Node *p=(Node *)malloc(sizeof(Node));28 if(p==NULL) return false;29 p->value=value;30 p->next=a->next;31 a->next=p;32 return true;33 }34 void pop_stack(Node *a){ //删除栈顶元素35 Node *p,*q;36 p=a->next;37 q=a->next->next;38 free(p); //释放栈顶元素空间39 a->next=q; //头指针指向栈顶元素40 }41 int get_top(Node *a){ //获取栈顶元素42 if(a->next==NULL) return -1;43 int value=a->next->value;44 return value;45 }46 int main(){47 Node *a;48 a=build_stack(); //调用建栈函数49 if(a==NULL){50 cout<<"建栈失败!"<
>n; //输入n,表示n个元素57 while(n--){58 int value;59 cin>>value;60 push_stack(a,value); //将输入的元素压入栈61 }62 if(!stack_empty(a)){63 cout<<"栈的大小为: "<
<

 

链队列:c++版

1 #include
2 #include
3 using namespace std; 4 struct Node{ 5 int value; 6 Node *next; 7 }; 8 Node * build_queue(){ //建立一个空队列 9 Node *p=(Node *)malloc(sizeof(Node));10 if(p==NULL) return p;11 p->next=NULL;12 return p;13 }14 bool queue_empty(Node *queue_head){ //判断队列是否为空15 if((queue_head->next)==NULL) return true;16 else return false;17 }18 void push_queue(Node * *queue_end,int value){ //将值为value的元素入队19 Node *q=*queue_end;20 Node *p=(Node *)malloc(sizeof(Node));//为新元素开辟空间21 p->value=value;22 p->next=NULL;23 q->next=p;24 *queue_end=p; //尾指针后移25 }26 void pop_queue(Node * queue_head){ //出队函数27 Node *p=queue_head;28 if(queue_empty(queue_head)) return; //判断队列是否为空29 Node *q=p->next->next;30 p=p->next;31 free(p); //释放出队元素的存储空间32 queue_head->next=q; //头指针后移33 }34 int get_front(Node *queue_head){ //获取队首元素的值35 if(queue_empty(queue_head)==true) return -1; //如果队列为空,返回-136 else return queue_head->next->value;37 }38 int main(){39 Node *queue_head,*queue_end;40 queue_head=build_queue();41 queue_end=queue_head; //队列初始时,队尾指针和队首指针指向同一结点42 if(queue_end==NULL){43 cout<<"建立队列失败!"<
>n; //输入一个n表示下一行输入n个元素49 for(int i=0;i
>x;52 push_queue(&queue_end,x); //将值为x的元素入队53 }54 cout<<"让当前队首元素 X 出队: X = "<
<
next!=NULL){60 cout<
next->value<<' ';61 pop_queue(queue_head);62 }63 cout<

 

转载于:https://www.cnblogs.com/ISGuXing/p/9016121.html

你可能感兴趣的文章
Xcode 4.3 使用xcodebuild命令编译项目环境设置
查看>>
大数据时代汽车行业CRM营销-李晓明,勒卡斯
查看>>
章文嵩-构建云计算平台的实践
查看>>
Sql delete 语句时表别名写法
查看>>
EGOTextView
查看>>
redis监控客户端redis-cli
查看>>
hibernate中拦截器与事件监听器的区别
查看>>
一个简单的电话本程序,支持添加和查找功能。
查看>>
使用堆栈实现括号的匹配
查看>>
超强壮的RSA加密Android短信
查看>>
MyEclipse中把选中的一部分代码变成全部大写或小写快捷键
查看>>
图片缩放
查看>>
自定义表单中计算控件的插件代码
查看>>
Java中的代理的使用
查看>>
springboot 下载文件
查看>>
使用C#创建SQL Server的存储过程
查看>>
一个鸡蛋的启示(传疯了)
查看>>
FreeMarker的优点和缺点
查看>>
ubuntu 安装tengine
查看>>
Java类到对象的创建过程
查看>>