浙大版《数据结构(第2版)》题目集
符义的博客
平淡的时光随风而逝,无人聆听。
展开
-
浙大版《数据结构(第2版)》题目集习题4.5 顺序存储的二叉树的最近的公共祖先问题 (25分)
ok,又水了一道题#include<stdio.h>#include<stdlib.h> #define max 1001#define swap(a,b) a ^= b,b ^= a,a ^= b;typedef struct Tnode *Tree;struct Tnode{ int data[max]; int size=0;};int NCA(int p1, int p2){ while(p1!=p2){ if(p1&原创 2021-01-29 20:38:47 · 295 阅读 · 0 评论 -
浙大版《数据结构(第2版)》题目集练习4.3 堆中的路径 (25分)
一次性ac了~#include<stdio.h>#include<stdlib.h>#define mindata -10001typedef int elementtype;typedef struct Tnode *heap;struct Tnode{ elementtype *data; int size; int capacity;}; typedef heap minheap;minheap create(int n){ h原创 2021-01-28 23:11:50 · 212 阅读 · 0 评论 -
浙大版《数据结构(第2版)》题目集练习4.2 平衡二叉树的根 (25分)
#include<stdio.h>#include<stdlib.h>typedef int elementtype;typedef struct AVLNode *Position;typedef Position AVLTree;struct AVLNode{ elementtype data; AVLTree left; AVLTree right; int H;}; int max(int a,int b){ return原创 2021-01-27 21:07:35 · 239 阅读 · 0 评论 -
浙大版《数据结构(第2版)》题目集练习4.1 根据后序和中序遍历输出先序遍历 (25分)
思路,通过递归构建一个二叉树,然后先序序列输出答案。#include<stdio.h>#include<stdlib.h>#define max 30//构建二叉树typedef struct Node *Tree;struct Node{ int data; Tree left; Tree right;};Tree createtree(int a[],int b[],int n);//构建二叉树void print(Tree b);原创 2021-01-26 19:34:04 · 269 阅读 · 0 评论 -
浙大版《数据结构(第2版)》题目集习题3.11 表达式转换 (25分)
#include<stdio.h>#include<stdlib.h>#include<string.h>struct snode{ char ch[20]; int top;};typedef struct snode *stack;stack create(){ stack s=(stack)malloc(sizeof(struct snode)); s->top=-1; return s;}void pu原创 2021-01-22 04:29:31 · 398 阅读 · 0 评论 -
浙大版《数据结构(第2版)》题目集习题3.10 汉诺塔的非递归实现 (25分)
#include<bits/stdc++.h> using namespace std;#define max 100typedef struct{ int N; char A; char B; char C;}Element;typedef struct{ Element data[100]; int top=-1;}Stack;void push(Stack *s,Element p){ s->data[++(s-&原创 2021-01-20 02:57:19 · 274 阅读 · 0 评论 -
浙大版《数据结构(第2版)》题目集习题3.9 堆栈操作合法性 (20分) 简单栈
#include<bits/stdc++.h>using namespace std;int main(){ int n,m; cin>>n>>m; string s; int s_len,top;//top作为一个栈的指标,-1时为空栈。 while(n--) { top=-1; cin>>s; s_len=s.length(); for(i原创 2021-01-19 17:40:48 · 333 阅读 · 0 评论 -
浙大版《数据结构(第2版)》题目集习题3.8 符号配对 (20分) 易理解版。
#include<bits/stdc++.h> using namespace std;const int maxsize = 1000;char Data[maxsize];//保存符号int len = 0;char c_stack[maxsize];//一个比较简易的栈int top = -1;int main(){ //筛选数据,记录符号到Data字符数组里 string s; while(getline(cin,s))//getline(cin,s原创 2021-01-19 02:47:39 · 384 阅读 · 0 评论 -
浙大版《数据结构(第2版)》题目集习题2.5 两个有序链表序列的合并 (15分)
递归版:List digui(List L1,List L2){ if(L1==NULL) return L2; if(L2==NULL) return L1; if(L1->Data<L2->Data) { L1->Next=digui(L1->Next,L2); return L1; } else { L2->Next=digui(L1,L2->Next原创 2021-01-18 01:58:51 · 231 阅读 · 0 评论 -
浙大版《数据结构(第2版)》题目集习题3.6 一元多项式的乘法与加法运算 (20分)
#include<bits/stdc++.h>using namespace std;#define N 10000void ride0(int a[], int b[], int c[])//乘法函数{ for(int l=0;l<N;l++) { if(a[l]){ for(int k=0;k<N;k++) { if(b[k])原创 2021-01-17 18:44:41 · 254 阅读 · 0 评论 -
浙大版《数据结构(第2版)》题目集习题3.4 最长连续递增子序列 (20分)
思路找到序列尾,然后找到序列头,然后输出。#include<bits/stdc++.h>using namespace std;int tail(int a[],int n)//找序列尾{ int sum=1,f=1,max=0; int i=1; while(i<n) { if(a[i-1]<a[i]) f++; else f=1; if(f>sum) { sum=原创 2021-01-17 14:42:11 · 260 阅读 · 1 评论 -
浙大版《数据结构(第2版)》题目集习题2.8 输出全排列 (20分)
#include<bits/stdc++.h>using namespace std;void swap(int a[],int i,int j) { int k,r; r=a[j]; for(k = j - 1;k>=i;k--) a[k+1]=a[k]; a[i]=r;}void swapback(int a[], int i,int j){ int k,r; r=a[i]; for(k=i+1;k<原创 2021-01-17 03:41:08 · 256 阅读 · 0 评论 -
浙大版《数据结构(第2版)》题目集习题2.3 数列求和-加强版 (20分)
#include<bits/stdc++.h>using namespace std;#define Max 100000int main(){ int A,N,C,D=0,i; int a[Max+1]; cin>>A>>N; if(N==0) { cout<<0; return 0; } for(i=0;i<N;i++) {原创 2021-01-16 23:16:28 · 276 阅读 · 0 评论 -
浙大版《数据结构(第2版)》题目集习题2.2 数组循环左移 (20分)
#include<bits/stdc++.h>using namespace std;int main(){ int a[100]; int n,m; cin>>n>>m; for(int i=0;i<n;i++) { cin>>a[(i-m+n)%n];//直接把这个数放到移动后的位置,直接不用移动,岂不美哉? } for(int i=0;i<n;i++) {原创 2021-01-16 19:02:03 · 333 阅读 · 0 评论 -
浙大版《数据结构(第2版)》题目集习题2.1 简单计算器 (20分)
#include<bits/stdc++.h> using namespace std;int main(){ int a,b; cin>>a; char ch; while((ch=getchar())!='=') { cin>>b; if(ch=='/'&&b==0) { printf("ERROR"); ret原创 2021-01-16 18:45:19 · 177 阅读 · 0 评论