![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
北林oj
北林oj平台数据结构解答
Eason634
有问题欢迎私信交流
展开
-
北林oj数据结构260
多组数据,每组数据有m+1行,第一行为二维数组的行数m和列数n,之后m行为输入的二维数组。当n=0且m=0时输入结束。设二维数组a[1..m, 1..n] 含有m*n 个整数。写一个算法判断a中所有元素是否互不相同。对于每组数据分别输出一行,若二维数组中存在相等元素则输出“YES”,否则输出“NO”。二维数组中的元素查重。原创 2024-03-25 10:26:39 · 256 阅读 · 0 评论 -
北林oj数据结构261
设任意n个整数存放于数组A[1..n]中,试编写算法,将所有正数排在所有负数前面(要求:正(负)数序列中数的相对顺序不变,算法时间复杂度为O(n))。多组数据,每组数据有两行,第一行为数组中存放的数的个数n,第二行为n个整数。当n=0时输入结束。对于每组数据分别输出一行,为分割排序后的数组。数组的正负数分割排序。原创 2024-03-25 12:14:16 · 331 阅读 · 0 评论 -
北林oj数据结构253
多组数据,每组数据有两行,第一行为链表的长度n,第二行为链表的n个元素(元素之间用空格分隔)。当n=0时输入结束。对于每组数据分别输出一行,对应链表中的各个结点的平均值,输出保留两位小数。利用单链表表示一个整数序列,利用递归的方法计算单链表中各个结点的平均值。递归求解单链表中的平均值。原创 2024-03-22 11:15:57 · 95 阅读 · 0 评论 -
北林oj数据结构252
多组数据,每组数据有两行,第一行为链表的长度n,第二行为链表的n个元素(元素之间用空格分隔)。当n=0时输入结束。利用单链表表示一个整数序列,利用递归的方法计算单链表中结点的个数。对于每组数据分别输出一行,对应链表中的各个结点个数。递归求解单链表中的结点个数。原创 2024-03-22 10:45:26 · 254 阅读 · 0 评论 -
北林oj数据结构251
多组数据,每组数据有两行,第一行为链表的长度n,第二行为链表的n个元素(元素之间用空格分隔)。当n=0时输入结束。利用单链表表示一个整数序列,利用递归的方法求出单链表中整数的最大值。对于每组数据分别输出一行,输出每个链表的最大值。递归求解单链表中的最大值。原创 2024-03-22 09:41:10 · 271 阅读 · 0 评论 -
北林oj数据结构250
多组数据,每组数据有一行,为两个整数m和n。当m和n都等于0时,输入结束。写出计算Ack(m,n)的非递归算法。每组数据输出一行,为Ack(m,n)。原创 2024-03-21 17:30:12 · 312 阅读 · 0 评论 -
北林oj数据结构249
多组数据,每组数据有一行,为两个整数m和n。当m和n都等于0时,输入结束。每组数据输出一行,为Ack(m,n)。写出计算Ack(m,n)的递归算法。原创 2024-03-21 16:55:51 · 409 阅读 · 0 评论 -
北林oj数据结构247
假设以数组Q[m]存放循环队列中的元素, 同时设置一个标志tag,以tag== 0和tag == 1来区别在队头指针(front)和队尾指针(rear)相等时,队列状态为“空”还是“满”。试编写与此结构相应的插入(enqueue)和删除(dlqueue)算法。多组数据,每组数据有两行。第一行为一个整数n,n表示入队序列A的长度(n个数依次连续入队,中间没有出队的情况),第二行为序列A(空格分隔的n个整数)。当n=0时,输入结束。对应每组数据输出一行。依次输出队列中所有的整数,每两个整数之间用空格分隔。原创 2024-03-21 12:00:22 · 367 阅读 · 0 评论 -
北林oj数据结构246
多组数据,每组数据有两行。第一行为两个整数n和m,n表示入队序列A的长度(n个数依次连续入队,中间没有出队的情况),m表示出队序列B的元素数量(m个数依次连续出队,中间没有入队的情况)。第二行为序列A(空格分隔的n个整数)。当n和m都等于0时,输入结束。每行包括m+1个整数,前m个数代表出队序列B的各个整数,最后一个整数表示队列是否为空,队列为空输出0,不为空输出1。用带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(不设头指针)。实现该队列的入队出队以及判断队列是否为空操作。原创 2024-03-21 10:42:02 · 367 阅读 · 0 评论 -
北林oj数据结构242
回文序列是正反读均相同的字符序列,如“abba”和“abdba”均是回文,但是“good”不是回文。请设计一个算法判定给定的字符序列是否为回文。多组数据,每组数据有一行。每一行为一个长度不定的字符序列A。当A为“0”时,输入结束。对于每组数据输出一行。若字符序列A是回文序列,则输出“YES”,否则输出“NO”。基于栈的回文字符序列判断。原创 2024-03-19 17:23:17 · 220 阅读 · 0 评论 -
北林oj数据结构241
第三行包括d1+1个整数,其中前d1个整数代表出栈序列D1,最后一个整数代表出栈操作完成时1号栈是否为空,栈空输出0,不空输出1。第一行为一个整数m,表示数组V的大小,第二行为四个整数e0、e1、d0、d1,e0和e1分别代表压入0号栈和1号栈的整数序列E0和E1的长度(依次连续入栈,中间没有出栈的情况),d0和d1分别代表从0号栈和1号栈弹出的序列的长度(依次连续出栈,中间没有入栈的情况)。当m=0时,输入结束。将编号为0和1的两个栈存放于一个数组空间V[m]中,栈底分别处于数组的两端。原创 2024-03-19 15:46:26 · 265 阅读 · 0 评论 -
北林oj数据结构239
一堆猴子都有编号,编号是1,2,3 ...m,这群猴子(m个)按照1~m的顺序围坐一圈,从第1开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。利用单向循环链表模拟此过程,依次输出出圈的猴子编号。多组数据,每组数据占一行,包括两个数据m和n。m代表猴子个数,n代表步数,m=0且n=0时输入结束。依次输出出圈的猴子编号,编号之间用空格隔开。原创 2024-03-17 20:55:41 · 380 阅读 · 0 评论 -
北林oj数据结构238
设str1和str2分别指向两个单词所在单链表的头结点,请实现一个时间上尽可能高效的算法,找出由str1和str2所指的两个链表共同后缀的起始位置的结点,输出该结点对应的字符(如图中的字符i)。多组数据,每组数据有三行,第一行为链表str1和str2的长度n和m,第二行为链表str1的n个元素,第三行为链表str2的m个元素(元素之间用空格分隔)。假定采用带头结点的单链表保存单词,当两个单词有相同的后缀时,则可共享相同的后缀空间。对于每组数据输出一行,为共同后缀的起始位置结点对应的字符。原创 2024-03-17 10:33:45 · 250 阅读 · 0 评论 -
北林oj数据结构237
一个长度为L(L≥1)的升序序列S,处在第L/2(若为小数则去掉小数后加1)个位置的数称为S的中位数。例如,若序列S1=(11,13,15,17,19),则S1的中位数是15。例如,若S2=(2,4,6,8,20),则S1和S2的中位数是11。现有两个等长升序序列A和B,试实现一个在时间和空间两方面都尽可能高效的算法,找出两个序列A和B的中位数。多组数据,每组数据有三行,第一行为序列的长度n,第二行为序列A的n个元素,第三行为序列B的n个元素(元素之间用空格分隔)。当n=0时输入结束。原创 2024-03-15 11:45:34 · 259 阅读 · 0 评论 -
北林oj数据结构236
多组数据,每组数据有两行,第一行为链表的长度n,第二行为链表的n个元素(元素之间用空格分隔)。当n=0时输入结束。利用单链表表示一个整数序列,实现一个时间复杂度为O(n)的算法,对于链表中绝对值相。对于每组数据分别输出一行,依次输出删除结点后的链表元素,元素之间用空格分隔。等的结点,仅保留第一次出现的结点而删除其余绝对值相等的结点。删除链表中绝对值相等的结点。原创 2024-03-15 11:23:58 · 172 阅读 · 0 评论 -
北林oj数据结构235
利用单链表表示一个整数序列,请实现一个时间复杂度为O(n)、空间复杂度为O(1)的算法,通过一趟遍历在单链表中确定倒数第k个结点。多组数据,每组数据有三行,第一行为链表的长度n,第二行为链表的n个元素(元素之间用空格分隔),第三行为k。当n=0时输入结束。对于每组数据分别输出一行,输出每个链表的倒数第k个结点对应的数值。查找链表中倒数第k个结点。原创 2024-03-15 10:51:22 · 282 阅读 · 0 评论 -
北林oj数据结构234
多组数据,每组数据有三行,第一行为顺序表的长度n,第二行为顺序表的n个元素(元素之间用空格分隔),第三行为待删除的元素的值item。当n=0时输入结束。利用顺序表表示一个包括n个整数的序列,请实现一个时间复杂度为O(n),空间复杂度为O(1)的算法,该算法可以删除表中所有值为item的元素。对于每组数据分别输出一行,依次输出删除值为item的元素后顺序表中的剩余元素,元素之间用空格分隔。删除顺序表中指定值的所有元素。原创 2024-03-15 10:23:26 · 166 阅读 · 0 评论 -
北林oj数据结构233
多组数据,每组数据有三行,第一行为链表的长度n,第二行为链表的n个元素(元素之间用空格分隔),第三行为p所指向的结点位置。当n=0时输入结束。利用双向循环链表表示一个整数序列,指定一个结点位置用p指向该结点,交换p所指向的结点及其前驱结点的顺序。对于每组数据分别输出一行,依次输出交换结点顺序后的链表元素,元素之间用空格分隔。双向循环链表中结点的交换。原创 2024-03-15 09:24:19 · 324 阅读 · 0 评论 -
北林oj数据结构232
利用单链表表示一个递增的整数序列,删除链表中值大于等于mink且小于等于maxk的所有元素(mink和maxk是给定的两个参数,其值可以和表中的元素相同,也可以不同)。多组数据,每组数据有两行,第一行为链表的长度n,第二行为链表的n个元素(元素之间用空格分隔),第三行为给定的mink和maxk(用空格分隔)。当n=0时输入结束。对于每组数据分别输出一行,依次输出删除元素后的链表元素,元素之间用空格分隔。删除链表中满足区间值的结点。原创 2024-03-14 18:23:29 · 320 阅读 · 0 评论 -
北林oj数据结构231
多组数据,每组数据有两行,第一行为链表的长度n,第二行为链表的n个元素(元素之间用空格分隔)。当n=0时输入结束。利用单链表表示一个整数序列,通过一趟遍历,将单链表中所有结点的链接方向逆转。要求空间复杂度为O(1)。对于每组数据分别输出一行,逆序输出链表中的元素,元素之间用空格分隔。原创 2024-03-14 17:21:39 · 341 阅读 · 0 评论 -
北林oj数据结构230
多组数据,每组数据有两行,第一行为链表的长度n,第二行为链表的n个元素(元素之间用空格分隔)。当n=0时输入结束。利用单链表表示一个整数序列,通过一趟遍历在单链表中确定值最大的结点。对于每组数据分别输出一行,输出每个链表的最大值。原创 2024-03-14 15:44:05 · 220 阅读 · 0 评论 -
北林oj数据结构229
利用单链表A表示一个非零整数序列,把A分解为两个具有相同结构的链表B和C,其中B表的结点为A表中值小于零的结点,而C表的结点为A表中值大于零的结点。要求空间复杂度为O(1),链表B和C均利用链表A的结点空间。多组数据,每组数据有两行,第一行为链表A的长度n,第二行为链表A的n个元素(元素之间用空格分隔)。当n=0时输入结束。对于每组数据分别输出两行,分别对应链表B和C的元素,每个数据之间用空格分隔。原创 2024-03-14 15:22:51 · 329 阅读 · 1 评论 -
北林oj数据结构227
多组数据,每组数据有三行,第一行为序列A和B的长度n和m,第二行为序列A的n个元素,第三行为序列B的m个元素(元素之间用空格分隔)。n=0且m=0时输入结束。给定两个递增的整数集合A和B,分别用链表表示集合A和B,求出A和B的交集,并存放在A中。要求空间复杂度为O(1)。对于每组数据输出一行,为A和B的交集,每个数据之间用空格分隔。基于链表的两个集合的交集。原创 2024-03-14 09:36:47 · 396 阅读 · 1 评论 -
北林oj数据结构223
出版社出版的任何一本图书的书号(ISBN)都是唯一的,即图书表中不允许包含书号重复的图书。定义一个包含图书信息(书号、书名、价格)的链表,读入相应的图书数据来完成图书信息表的创建(书号可能重复),然后进行图书的去重,即删除书号重复的图书(只保留第一本),最后输出去重后所有图书的信息。总计输出m+1行(m≤n),其中,第一行是去重后的图书数目,后m行是去重后图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,其中价格输出保留两位小数。基于链存储结构的图书信息表的图书去重。原创 2024-03-05 11:28:37 · 569 阅读 · 1 评论 -
北林oj数据结构222
首先输入n+1行,其中,第一行是图书数目n,后n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。若删除成功: 输出旧图书出库后所有图书的信息(书号、书名、价格),总计n-1行,每行是一本图书的信息,书号、书名、价格用空格分隔。其中价格输出保留两位小数。定义一个包含图书信息(书号、书名、价格)的链表,读入相应的图书数据来完成图书信息表的创建,然后根据指定的待出库的旧图书的位置,将该图书从图书表中删除,最后输出该图书出库后的所有图书的信息。原创 2024-03-04 17:46:34 · 401 阅读 · 1 评论 -
北林oj数据结构221
首先输入n+1行,其中,第一行是图书数目n,后n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。定义一个包含图书信息(书号、书名、价格)的链表,读入相应的图书数据来完成图书信息表的创建,然后根据指定的待入库的新图书的位置和图书的信息,将新图书插入到图书表中指定的位置上,最后输出新图书入库后的所有图书的信息。若插入成功: 输出新图书入库后所有图书的信息(书号、书名、价格),总计n+1行,每行是一本图书的信息,书号、书名、价格用空格分隔。原创 2024-03-04 17:30:39 · 436 阅读 · 1 评论 -
北林oj数据结构220
首先输入n+1行,其中,第一行是图书数目n,后n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。其中书号和书名为字符串类型,价格为浮点数类型。输出m行 若查找成功: 输出内容为第i次查询的指定位置上的一本图书的信息(书号、书名、价格),书号、书名、价格用空格分隔,其中价格输出保留两位小数。定义一个包含图书信息(书号、书名、价格)的链表,读入相应的图书数据来完成图书信息表的创建,然后根据指定的最佳位置的序号,查找该位置上的图书,输出相应图书的信息。原创 2024-03-04 17:10:06 · 212 阅读 · 0 评论 -
北林oj数据结构219
然后输入m+1行,其中,第一行是一个整数m,代表查找m次,后m行是每次待查找的最爱图书名字。若查找成功: 总计输出m*(k+1)行,对于每一次查找,第一行是最爱图书数目(同一书名的图书可能有多本),后k行是最爱图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,其中价格输出保留两位小数。定义一个包含图书信息(书号、书名、价格)的链表,读入相应的图书数据来完成图书信息表的创建,然后根据指定的最爱图书的名字,查找最爱的图书,输出相应图书的信息。原创 2024-03-04 16:39:54 · 195 阅读 · 1 评论 -
北林oj数据结构218
总计输入n+1行,其中,第一行是图书数目n,后n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。总计输出m+1行,其中,第一行是最贵图书数目(价格最高的图书可能有多本),后m行是最贵图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,其中价格输出保留两位小数。定义一个包含图书信息(书号、书名、价格)的链表,读入相应的图书数据来完成图书信息表的创建,然后查找价格最高的图书,输出相应图书的信息。原创 2024-03-04 16:22:26 · 161 阅读 · 1 评论 -
北林oj数据结构217
输入n+1行,第一行是图书数目n,后n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。其中书号和书名为字符串类型,价格为浮点数类型。总计n行,第i行是原有图书表中第n-i+1行的图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔。定义一个包含图书信息(书号、书名、价格)的链表,读入相应的图书数据来完成图书信息表的创建,然后将读入的图书逆序存储,逐行输出逆序存储后每本图书的信息。基于链式存储结构的图书信息表的逆序存储。原创 2024-03-04 16:07:13 · 466 阅读 · 1 评论 -
北林oj数据结构216
定义一个包含图书信息(书号、书名、价格)的链表,读入相应的图书数据完成图书信息表的创建,然后计算所有图书的平均价格,将所有低于平均价格的图书价格提高20%,所有高于或等于平均价格的图书价格提高10%,最后逐行输出价格修改后的图书信息。输入n+1行,前n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。总计n+1行,第1行是修改前所有图书的平均价格,后n行是价格修改后n本图书的信息,每本图书信息占一行,书号、书名、价格用空格分隔。原创 2024-03-04 09:35:43 · 140 阅读 · 1 评论 -
北林oj数据结构215
输入n+1行,前n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。最后第n+1行是输入结束标志:0 0 0(空格分隔的三个0)。其中书号和书名为字符串类型,价格为浮点数类型。定义一个包含图书信息(书号、书名、价格)的链表,读入相应的图书数据完成图书信息表的创建,然后将图书按照价格降序排序,逐行输出排序后每本图书的信息。总计n行,每行是一本图书的信息(书号、书名、价格),书号、书名、价格用空格分隔。其中价格输出保留两位小数。原创 2024-03-04 09:17:29 · 464 阅读 · 1 评论 -
北林oj数据结构214
输入n+1行,其中前n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。最后第n+1行是输入结束标志:0 0 0(空格分隔的三个0)。总计n+1行,第1行是所创建的图书表中的图书个数,后n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔。其中价格输出保留两位小数。定义一个包含图书信息(书号、书名、价格)的链表,读入相应的图书数据来完成图书信息表的创建,然后统计图书表中的图书个数,同时逐行输出每本图书的信息。原创 2024-03-03 20:06:33 · 161 阅读 · 0 评论 -
北林oj数据结构213
出版社出版的任何一本图书的书号(ISBN)都是唯一的,即图书表中不允许包含书号重复的图书。定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书信息表的创建(书号可能重复),然后进行图书的去重,即删除书号重复的图书(只保留第一本),最后输出去重后所有图书的信息。总计输出m+1行(m≤n),其中,第一行是去重后的图书数目,后m行是去重后图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,其中价格输出保留两位小数。基于顺序存储结构的图书信息表的图书去重。原创 2024-03-03 09:35:28 · 251 阅读 · 0 评论 -
北林oj数据结构212
首先输入n+1行,其中,第一行是图书数目n,后n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。若删除成功: 输出旧图书出库后所有图书的信息(书号、书名、价格),总计n-1行,每行是一本图书的信息,书号、书名、价格用空格分隔。其中价格输出保留两位小数。定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后根据指定的待出库的旧图书的位置,将该图书从图书表中删除,最后输出该图书出库后的所有图书的信息。原创 2024-03-03 09:16:24 · 494 阅读 · 0 评论 -
北林oj数据结构211
首先输入n+1行,其中,第一行是图书数目n,后n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。若插入成功: 输出新图书入库后所有图书的信息(书号、书名、价格),总计n+1行,每行是一本图书的信息,书号、书名、价格用空格分隔。定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后根据指定的待入库的新图书的位置和信息,将新图书插入到图书表中指定的位置上,最后输出新图书入库后所有图书的信息。原创 2024-03-01 22:01:42 · 313 阅读 · 1 评论 -
北林oj数据结构210
首先输入n+1行,其中,第一行是图书数目n,后n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。其中书号和书名为字符串类型,价格为浮点数类型。输出m行 若查找成功: 输出内容为第i次查询的指定位置上的一本图书的信息(书号、书名、价格),书号、书名、价格用空格分隔,其中价格输出保留两位小数。定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后根据指定的最佳位置的序号,查找该位置上的图书,输出相应图书的信息。原创 2024-03-01 20:41:17 · 290 阅读 · 1 评论 -
北林oj数据结构209
然后输入m+1行,其中,第一行是一个整数m,代表查找m次,后m行是每次待查找的最爱图书名字。若查找成功: 总计输出m*(k+1)行,对于每一次查找,第一行是最爱图书数目(同一书名的图书可能有多本),后k行是最爱图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,其中价格输出保留两位小数。定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后根据指定的最爱图书的名字,查找最爱的图书,输出相应图书的信息。原创 2024-03-01 20:06:41 · 119 阅读 · 1 评论 -
北林oj数据结构208
总计输入n+1行,其中,第一行是图书数目n,后n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。其中书号和书名为字符串类型,价格为浮点数类型。总计输出m+1行,其中,第一行是最贵图书的数目(价格最高的图书可能有多本),后m行是最贵图书的信息,每本图书信息占一行,书号、书名、价格用空格分隔,其中价格输出保留两位小数。定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后查找价格最高的图书,输出相应图书的信息。原创 2024-03-01 18:15:39 · 256 阅读 · 1 评论 -
北林oj数据结构206
string no;int length;L.length=0;while(1){break;L.length++;double a,b;i<L.length;i++){i<L.length;i++){sqlist l;init(l);input(l);output(l);return 0;原创 2024-02-29 20:49:53 · 327 阅读 · 1 评论