- 博客(22)
- 收藏
- 关注
原创 树与二叉树——路径
题目:假设二叉树采用二叉链表方式存储, root指向根结点,node 指向二叉树中的一个结点,编写函数 path,计算root到 node 之间的路径,(该路径包括root结点和 node 结点)。path 函数声明如下:bool path(BiTNode* root, BiTNode* node, Stack* s);其中,root指向二叉树的根结点,node指向二叉树中的另一结点,s 为已经初始化好的栈,该栈用来保存函数所计算的路径,如正确找出路径,则函数返回 true,此时root在栈.
2021-09-16 21:37:58 539 2
原创 先序遍历(icoding)
代码仅供参考,望多多思考题目:已知二叉树按照二叉链表方式存储,利用栈的基本操作写出先序遍历非递归形式的算法:void pre_order(BiTree root);在遍历过程中,pre_order函数需要调用 visit_node 函数来实现对结点的访问,该函数声明如下:void visit_node(BiTNode *node);二叉树的相关定义如下:typedef int DataType;typedef struct Node{ DataType data
2021-08-04 12:19:03 702
原创 十字链表(icoding)
代码仅供参考,望多多思考题目:十字链表相关定义如下:typedef int ElemType;// 非零元素结点结构typedef struct OLNode{ int row,col; ElemType value; struct OLNode *right,*down;}OLNode,*OLink;// 十字链表结构typedef struct{ OLink *rowhead,*colhead; int rows,cols,nums
2021-08-04 12:16:09 1795 1
原创 栈 后缀表达式计算(icoding)
题目:请使用已定义好的栈完成后缀表达式计算:(1)如果是操作数,直接入栈(2)如果是操作符op,连续出栈两次,得到操作数x 和 y,计算 x op y,并将结果入栈。后缀表达式示例如下:931-3*+102/+13445+51/6-操作数、操作符之间由空格隔开,操作符有 +,-,*, /, %共 5 种符号,所有操作数都为整型。栈的定义如下:#define Stack_Size 50typedef struct...
2021-08-04 12:13:58 542
原创 矩阵加法
题目:实现三元组表示的两个稀疏矩阵的加法。相关定义如下:#define MAXSIZE 100 //假设非零元个数的最大值为100typedef struct { int i,j; //非零元的行下标和列下标,i 和 j 从 1 开始计数,与数学中矩阵元素的编号一致 ElemType e; //非零元的值}Triple;typedef struct { Triple data[MAXSIZE]; // 非零元三元组表
2021-07-31 07:28:03 602
原创 队列 循环链表表示队列
题目:假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针),请完成下列任务:1: 队列初始化,成功返回真,否则返回假:bool init_queue(LinkQueue *LQ);2: 入队列,成功返回真,否则返回假:bool enter_queue(LinkQueue *LQ, ElemType x);3: 出队列,成功返回真,且*x为出队的值,否则返回假bool leave_queue(LinkQueue *LQ, ElemType *x);相关...
2021-07-31 07:26:03 567
原创 串 比较
题目:不调用库函数,自己实现字符串的比较操作:该操作当比较的两个字符是都是字母,且两个字符互为大小写(如a和A、e和E)时认为两个字符相同,否则不同,其比较结果按这两个字符的原值确定。函数的返回值规定如下:返回值 < 0:第一个不匹配的字符在 ptr1 中的值低于 ptr2 中的值返回值 == 0:两个字符串的内容相等返回值 > 0:第一个不匹配的字符在 ptr1 中的值大于在 ptr2 中的值函数原型如下:int str_compare(const char* ptr1,
2021-07-31 07:21:57 716
原创 链表 合并
题目:设线性表A=(a1, a2,…,am),B=(b1, b2,…,bn),试写一个按下列规则合并A、B为线性表C的算法,使得:C= (a1, b1,…,am, bm, bm+1, …,bn) 当m≤n时;或者C= (a1, b1,…,an, bn, an+1, …,am) 当m>n时。线性表A、B、C均以单链表作为存储结构,且C表利用A表和B表中的结点空间构成。注意:单链表的长度值m和n均未显式存储。函数的原型如下:void lnk_merge(LinkList A, LinkLis
2021-07-31 07:20:27 554
原创 链表 倒数查找
题目:已知一个带有表头结点的单链表, 假设链表只给出了头指针L。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k个位置上的结点(k为正整数)。函数原型为:int lnk_search(LinkList L, int k, ElemType* p_ele)若查找成功,函数通过指针参数 p_ele 返回该结点 data 域的值,此时函数返回 1;否则,函数返回 0。相关定义如下:struct _lnklist{ ElemType data; struct _ln
2021-07-31 07:18:21 232
原创 链表 删除范围内结点
已知线性表中的元素(整数)以值递增有序排列,并以单链表作存储结构。试写一高效算法,删除表中所有大于mink且小于maxk的元素(若表中存在这样的元素),分析你的算法的时间复杂度。链表结点定义如下:struct _lnklist{ ElemType data; struct _lnklist *next;};typedef struct _lnklist Node;typedef struct _lnklist *LinkList;函数原型如下:void lnk_del_x
2021-07-30 10:12:57 604
原创 顺序表 数据调整
已知顺序表L中的数据元素类型为int。设计算法将其调整为左右两部分,左边的元素(即排在前面的)均为奇数,右边所有元素(即排在后面的)均为偶数,并要求算法的时间复杂度为O(n),空间复杂度为O(1)。函数原型如下:void odd_even(SeqList *L);相关定义如下:struct _seqlist{ ElemType elem[MAXSIZE]; int last;};typedef struct _seqlist SeqList;代码:#includ
2021-07-30 10:11:26 332
原创 顺序表 删除重复
编写算法,在一非递减的顺序表L中,删除所有值相等的多余元素。要求时间复杂度为O(n),空间复杂度为O(1)。函数原型如下:void del_dupnum(SeqList *L)相关定义如下:struct _seqlist{ ElemType elem[MAXSIZE]; int last;};typedef struct _seqlist SeqList;代码:#include "list.h" // 请不要删除,否则检查不通过#include <stdi
2021-07-30 10:09:39 424
原创 线性表 顺序表 删除指定范围
设计一个高效的算法,从顺序表L中删除所有值介于x和y之间(包括x和y)的所有元素(假设y>=x),要求时间复杂度为O(n),空间复杂度为O(1)。函数原型如下:void del_x2y(SeqList *L, ElemType x, ElemType y);相关定义如下:struct _seqlist{ ElemType elem[MAXSIZE]; int last;};typedef struct _seqlist SeqList;代码#includ..
2021-07-30 09:47:22 597
原创 20届icoding实验六(10~13)
代码仅供参考,望多多思考#define GOODS_FILE_NAME "goodsinfo.txt"#define MAX_ID_LEN 30#define MAX_NAME_LEN 30#define MAX_PRICE_LEN 30#define MAX_DISCOUNT_LEN 30typedef struct {char goods_id[MAX_ID_LEN];char goods_name[MAX_NAME_LEN];int goods_price;char g
2021-07-30 09:42:43 1588
原创 20届实验六(7~9)
代码仅供参考,望多多思考#define GOODS_FILE_NAME "goodsinfo.txt"#define MAX_ID_LEN 30#define MAX_NAME_LEN 30#define MAX_PRICE_LEN 30#define MAX_DISCOUNT_LEN 30typedef struct {char goods_id[MAX_ID_LEN];char goods_name[MAX_NAME_LEN];int goods_price;char g
2021-07-30 09:30:45 886 3
原创 20届实验六(4~6)
#define GOODS_FILE_NAME "goodsinfo.txt"#define MAX_ID_LEN 30#define MAX_NAME_LEN 30#define MAX_PRICE_LEN 30#define MAX_DISCOUNT_LEN 30typedef struct {char goods_id[MAX_ID_LEN];char goods_name[MAX_NAME_LEN];int goods_price;char goods_discount[.
2021-07-30 09:26:06 722
原创 20届icoding实验六(1~3)
仅供参考,望自己多多思考01-软件界面控制实现一个数字选项式的启动界面,程序输入数据为(1-8),参考界面如下:1.显示所有商品的信息2.修改某个商品的信息3.插入某个商品的信息4.删除某个商品的信息5.查找某个商品的信息6.商品存盘并退出系统7.对商品价格进行排序8.(慎用)删除所有内容其他.不存盘并退出系统相关结构及函数声明如下:#define GOODS_FILE_NAME "goodsinfo.txt"#define MA...
2021-07-28 19:18:15 2499 1
原创 20届icoding实验五
MAIN函数改造。 修改16.3节的INVERTORY.C程序,使 INVENTORY 和 NUM_PARTS 为 MAIN 函数的局部变量。本小题只需完成main函数的改造即可,相关结构及函数声明如下:#define NAME_LEN 25#define MAX_PARTS 100struct part {int number;char name[NAME_LEN+1];int on_hand;};int read_line(char str[], int n);in..
2021-07-28 19:10:07 1760 1
原创 20届icoding实验四
代码仅供参考,望大家多多思考10-1:栈(STACK) 修改如下程序(10.2节的栈示例)使它存储字符而不是整数。 增加 MAIN 函数,用来要求用户输入一串圆括号或花括号,然后指出它们之间的嵌套是否正确。Enter parentheses and/or braces: ()({})({})Parentheses/braces are nested properlyEnter parentheses and/or braces: ((}Parentheses/braces are N
2021-07-28 17:11:42 2991 11
原创 20届icoding实验三
7-4:翻译(TRANSLATION) 编写程序可以把字⺟格式的电话号码翻译成数值格式: ENTER PHONE NUMBER: CALLATT 2255288如果没有电话在身边,参考这⾥给出的字⺟在键盘上的对应关系:(2=ABC,3=DEF,4=GHI,5=JKL,6=MNO,7=PQRS,8=TUV,9=WXYZ)原始电话号码中的⾮字⺟字符(例如数字或标点符号)保持不变:Enter phone number: 1-800-COL-LECT1-800-265-5328可以假设任何⽤户输⼊的
2021-07-28 16:55:03 5190 1
原创 20届 icoding 实验二
5-2: 24⼩时制-12⼩时制转换(24-HOUR TO 12-HOUR)编写⼀个程序,要求⽤户输⼊ 24 ⼩时制的时间,将其转换为 12 ⼩时制的格式。Enter a 24-hour time: 21:11Equivalent 12-hour time: 9:11 PMEnter a 24-hour time: 0:01Equivalent 12-hour time: 12:01 AM注意,不要把12:00显示为0:00。#include <stdio.h>#in
2021-07-25 19:58:11 3504
原创 20届icoding 实验1
2-4:计算税金编写⼀个程序,要求⽤户输⼊⼀个美元数量,然后显示出增加 5% 税率后的相应⾦额。Enter an amount: 100.00with tax added: $105.00输⼊的⾦额为⼤于 0 的两位数浮点数。#include <stdio.h>#include <stdlib.h>int main(){ float x = 0.0f, y; scanf("%f", &x); y = (1 + 0.05) *
2021-07-25 18:53:05 2107
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人