队列和栈的应用、单链表的创建、模拟链表
来源:互联网 发布:买家淘宝怎么发买家秀 编辑:程序博客网 时间:2024/06/08 14:12
队列的应用
有一串数字:6 3 1 7 5 8 9 2 4,解码规则:删除一个,下一个添加到串尾,直到全部删除,然后输出依次被删的顺序。
#include<stdio.h>#define max 20int main(){ int i,len,head,tail,a[max]; printf("input the len:"); scanf("%d",&len); head=0; tail=len; for(i=0;i<len;i++) scanf("%d",&a[i]); printf("print the number:"); while(head<tail) { printf("%d ",a[head]); head++; a[tail]=a[head]; tail++; head++; } return 0;}
栈的应用
利用栈判断字符串是否属于回文序列
#include<stdio.h>#include<string.h>#define max 20int main() { char a[max],s[max]; int i,len,mid,top,next; printf("input the str:"); gets(a); len=strlen(a); mid=len/2-1; top=0; for(i=0;i<=mid;i++) { top++; s[top]=a[i]; } if(len%2) next=mid+2; else next=mid+1; for(i=next;i<len;i++) { if(a[i]!=s[top]) break; top--; } if(top) printf("it is NO"); else printf("it is YES"); return 0;}
单链表的创建和插入
利用指针创建一个有序单链表,并插入一个数字
#include<stdio.h>#include<stdlib.h>struct node{ int data; struct node*next;};int main(){ struct node*head,*p,*q,*t; int i,n,a; printf("input the n: "); scanf("%d",&n); head=NULL; printf("input the numbers:"); for(i=1;i<=n;i++) { scanf("%d",&a); p=(struct node*)malloc(sizeof(struct node)); p->data=a; p->next=NULL; if(head==NULL) head=p; else q->next=p; q=p; } printf("input the insert : "); scanf("%d",&a); t=head; while(t!=NULL) { if(t->next==NULL||t->next->data>a) { p=(struct node*)malloc(sizeof(struct node)); p->data=a; p->next=t->next; t->next=p; break; } t=t->next; } t=head; printf("the order:"); while(t!=NULL) { printf("%d ",t->data); t=t->next; } return 0; }
模拟链表
用数组模拟链表,实现插入
#include<stdio.h>#define max 20int main(){ int data[max],right[max]; int i,n,t,len; printf("input the len:"); scanf("%d",&len); printf("input the numbers:"); for(i=1;i<=len;i++) scanf("%d",&data[i]); for(i=1;i<=len;i++) { if(i!=len) right[i]=i+1; else right[i]=0; } len++; printf("insert: "); scanf("%d",&data[len]); t=1; while(t!=0) { if(data[right[t]]>data[len]) { right[len]=right[t]; right[t]=len; break; } t=right[t]; } t=1; printf("the order:"); while(t) { printf("%d ",data[t]); t=right[t]; } return 0;}
小结
栈和队列概念不难,链表的创建(头插法)和插入也是建立在指针的基础上,模拟链表名字有些唬人,其实是对数组的进一步运用,所以要加强对概念和基础的掌握。
阅读全文
0 0
- 队列和栈的应用、单链表的创建、模拟链表
- 栈和队列的应用
- 栈和队列的相互模拟
- 栈和队列的相互模拟
- (C++)栈和队列的模拟实现
- 菜鸟:模拟栈和队列的push和pop
- 栈和队列的应用-魔王语言
- 数据结构----栈和队列的综合应用
- 栈和队列的思想应用
- 数据结构 栈和队列的一些应用
- 实验二 栈和队列的应用
- 表达式求值-栈和队列的应用
- 栈和队列的实际应用
- c#栈队列的实现和应用
- 队列和栈的应用 ------ 停车场
- 双向队列 和 栈的应用
- 栈和队列的基本应用
- 栈和队列的简单应用
- <a href=>标签 打开新窗口 和本窗口打开连接方法
- Android6.0运行时权限-----AndPermission的使用
- 机器学习--决策树
- bzoj 2243 染色 树链剖分 解题报告
- mysql 触发器
- 队列和栈的应用、单链表的创建、模拟链表
- HTML页面内容禁止选择、复制、右键、禁用移动端长按a标签弹窗
- ContentResolvet获取手机所有联系人信息、根据单个号码获取所有信息
- 监督学习、无监督学习、半监督学习、强化学习
- 十个值得一试的开源深度学习框架
- 快速排序5分钟快速学习(小白指南)
- Java数据类型
- MacBook上 MySql 修改初始密码
- 远程仓库maven 下载失败 XXX.jar.lastUpdated