- 博客(13)
- 问答 (1)
- 收藏
- 关注
原创 二叉树--请设计一个算法,将给定的表达式树(二叉树)转换为等价的中缀表达式(通过括号反映操作符的计算次序)并输出。
/* * / \ + * / \ / \ a b c - \ d(a+b)*(c*(-d))*/typedef struct node{ char data[10]; struct node *left,*right;}BTree;/...
2020-04-24 23:13:42
4747
3
原创 二叉树--1.求二叉树高度。2.判断是否为完全二叉树。3.求二叉树带权路径长度和。4.孩子兄弟表示法存储的森林叶子结点数
#define MaxSize 50typedef enmu{false,true} bool;typedef char ElemType_c;typedef struct BitNode{ ElemType_c data; struct BitNode *lchild,*rchild;}BitNode,*BiTree;/*求二叉树的高度,判断是否为完全二叉树,实际上都是二叉树层次...
2020-04-21 22:41:14
311
1
原创 链表--用单链表保存m个整数,且|data|小于等于n。现要求设计一个时间复杂度尽可能高效的算法,对链表中绝对值相等的结点,仅保留第一次出现结点,而删除其余绝对值相同结点
#include <stdlib.h>typedef struct LNode{ int data; struct LNode *next;}LNode,*LinkList;void Del_abs_same(LinkList L,int n){ LNode *pre=L,*p=L->next,*f; int *q=malloc(sizeof(int)*(n+1))...
2020-04-19 23:52:17
4664
6
原创 链表--带头结点的非循环双向链表,其中每个结点中多一个freq频度域。每次Locate(L,x)访问过值为x的函数后,freq+1,并使此链表中结点保持按访问频度递减的顺序排列
/*带头结点的非循环双向链表,其中每个结点中多一个freq频度域。每次Locate(L,x)访问过值为x的函数后,freq+1,并使此链表中结点保持按访问频度递减的顺序排列, 同时最近访问的结点排在频度相同的结点前面,以便使频繁访问的结点总是靠近表头。试编写符合上述要求的Locate(L,x)运算的算法,返回找到结点的地址,类型为指针型*/typedef int ElemType;typed...
2020-04-19 23:09:12
1080
原创 链表--试编写算法将带头结点的单链表就地逆置,所谓”就地“是指辅助空间复杂度为O(1)
typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;/*方法一是采用三个工作指针的方式,就地逆置单链表结点*/void Reverse1(LinkList L){ LNode *q,*p,*r; p=L->next;r=p->next...
2020-04-19 20:56:03
3361
10
原创 链表--一个带头结点的单链表,按递增次序输出单链表中各结点的数据元素,并释放结点所占的存储空间。(要求:不允许使用数组作为辅助空间)
#include <stdio.h>#include <stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;void Min_print(LinkList L){ LNode *p,*q,*pre; ...
2020-04-19 19:53:35
5160
7
原创 顺序表--对长度为n的顺序表L,编写一个时间复杂度为O(n),空间复杂度为O(1)的算法,该算法删除线性表中所有值为x的数据元素
/*对长度为n的顺序表L,编写一个时间复杂度为O(n),空间复杂度为O(1)的算法,该算法删除线性表中所有值为x的数据元素*/#define MAXSIZE 50typedef int ElemType;typedef struct{ ElemType data[MAXSIZE]; int length;}SqList;bool Del_x_1(SqList *L,ElemT...
2020-04-19 02:53:52
4124
原创 给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)
先贴代码#include<stdio.h>#include <stdlib.h>#define N 10int main(void){ int p[10]; char *sum; int i,j,count=0; for(i=0;i<N;i++){ scanf("%d",&p[i]); ...
2020-04-06 00:05:03
11185
2
原创 剔除字符串内指定字符
/*目前为止看到比较优雅的一种方法,从别人博客学习到的,做个学习记录。其实和有序数组去重,有些神似,都是用两个下标来处理。*/void delchar( char *str, char c ){ char *s; s=str; while (*str!='\0') { if(*str!=c){ *s++=*str; ...
2020-04-05 21:03:47
2104
原创 PTA平台习题---写一个函数,输入一行字符,将此字符串中最长的单词输出
/*写一个函数,输入一行字符,将此字符串中最长的单词输出*/void longest(){ int flag=0,count=0,maxLength=0,index=0; //count用来计数当前单词长度,index是最长单词的下标位置。 int i,j; char words[30],ch; printf("请输入一行字符:\n"); gets(wor...
2020-03-19 22:55:45
1465
4
原创 将b字符串粘贴到a字符串后方
void strCat(){ char a[100],b[20]; int i=0,j=0; printf("请输入两个字符串:\n"); gets(a);gets(b); while (a[i]!='\0') i++; while (b[j]!='\0') a[i++]=b[j++]; a[i]='\0'; ...
2020-03-19 22:10:12
598
原创 输出一个杨辉三角(10层)
/*杨辉三角*/void pascalTriangle(){ int a[10][10]={1}; for(int i=0;i<10;i++){ for(int j=0;j<=i;j++){ if(j==0||i==j){ a[i][j]=1; }else{ ...
2020-03-19 22:06:53
837
原创 写一个函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字间空一格空格。如输入1990,应输出”1 9 9 0“
/*写一个函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字间空一格空格。如输入1990,应输出”1 9 9 0“*/void doubleBoring(int p){ if(p/10!=0){ doubleBoring(p/10); printf(" "); } printf("%c",p%10+'0');}int ma...
2020-03-19 21:59:09
3178
空空如也
char a[3][4] 和char **p之间的联系到底是什么
2020-03-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人