博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
栈、队列、链表
阅读量:6158 次
发布时间:2019-06-21

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

hot3.png

1.队列

title:一串数字,每次都把开头的数删除,第二个数放到队尾巴,按这样的删除的数字顺序是什么struct queue{    int data[100];//队列的主体,用来存储内容    int head;//队首    int tail;//队尾};int main(int argc, const char * argv[]) {        struct queue q;    int i;        //初始化队列    q.head = 1;    q.tail = 1;    for (i = 1; i <= 9; i++) {        scanf("%d",&q.data[q.tail]);        q.tail++; //自增在后面,表示队尾指在最后一个数的后一位    }        while (q.head < q.tail) {        //首先队首打印,即删除的数字        printf("%d ",q.data[q.head]);        q.head++;            //将新队首的数添加到队尾        q.data[q.tail] = q.data[q.head];        q.tail++;        //再将队首出队        q.head++;    }            return 0;}

2.链表

假设目前我们已经排序好了一串数字,但中途要插入一个数字,这样的话,大于这个数字的数都要往后移一位了。

int main(int argc, const char * argv[]) {    /*     假设2个数组,1个为数字的列表,另外一个为每一个数字的右边的数字的排序          data    2 3 5 8 9 10 18 26 32     right   2 3 4 5 6  7  8  9  0      =>  data    2 3 5 8 9 10 18 26 32 6     right   2 3 4 5 6  7  8  9  0 10      =>  data    2 3 5  8 9 10 18 26 32 6     right   2 3 10 5 6  7  8  9  0 4     */                int data[101],right[101];    int i,n,t,len;       printf("需要读入多少个数字");    scanf("%d",&n);    for (i = 1; i <= n; i++) {        scanf("%d",&data[i]);    }    len = n;        //初始化数组right    for (i = 1; i <=n; i++) {        if (i!=n) {            right[i] = i+1;        }else{            right[i] = 0;        }    }        //直接再数组data的末位增加一个数    printf("添加你需要插入的数字");    len++;    scanf("%d",&data[len]);        //核心算法    //从链表的头部开始遍历    t =1;    while (t != 0) {        if (data[right[t]] > data[len]) {            //right数组的位置调换            right[len] = right[t];            right[t] = len;            break;        }        //因为位置调换了,原本的位置给放到len即最后处了        t = right[t];    }        //输出链表(right数组)中所有的数    t = 1;    while (t != 0) {        printf("%d",data[t]);        t = right[t];    }    }

 

转载于:https://my.oschina.net/u/2346786/blog/775274

你可能感兴趣的文章
写给MongoDB开发者的50条建议Tip11
查看>>
Oracle 11g RAC features
查看>>
java多线程 -- 同步鎖
查看>>
Qt学习之路(28): 坐标变换
查看>>
Redhat系统下三种主要的软件包安装方法
查看>>
3.5. Buttons
查看>>
回溯法求解N皇后问题(Java实现)
查看>>
centos iptables
查看>>
Waymo冰火两重天:无人出租车最快今秋推出,高管团队嫌隙严重
查看>>
XML与CSS结合
查看>>
Lesson 1:单线程 Socket Communications(一)
查看>>
来自凌辉的祝福
查看>>
sql 查询模块
查看>>
教学思路C#之入门一 认识简单的C#结构
查看>>
自定义hive url parse函数
查看>>
.NET多线程编程(7)——C#多线程编程传递参数解决方案
查看>>
论“前置测试模型”-1 概念篇
查看>>
微软私有云分享(R2)16PowerShell查看虚拟机信息
查看>>
(运维)VMware-vCenter-Server-update Management
查看>>
.NET平台开发必须掌握的XML知识(二)
查看>>