数据结构PTA
遇见生活222
此号不用
展开
-
数据结构冲刺练习题
#include <iostream>using namespace std;const int N = 1e5+10;int a[N];int main(){ int n; cin >> n; for(int i = 0;i < n;i++)cin >> a[i]; int ...原创 2019-12-18 21:28:02 · 279 阅读 · 4 评论 -
数据结构第8章
#include <iostream>using namespace std;int n,k; const int N = 1e5+10;int a[N];int main(){ cin >> n >> k; for(int i = 0;i < n;i++)cin >> a[i]; for(int i = 0;i...原创 2019-12-18 21:26:17 · 1416 阅读 · 0 评论 -
数据结构第7章
Position BinarySearch( List L, ElementType X ){ int begin = 0,last = L->Last; for(int i = 1;i <=last;i++) { if(L->Data[i] == X){ return i; } ...原创 2019-12-18 21:25:19 · 308 阅读 · 0 评论 -
数据结构第6章
void DFS( MGraph Graph, Vertex V, void (*Visit)(Vertex) ){ Visited[V] = true; Visit(V); for(int i = 0; i < Graph->Nv;i++) { if(!Visited[i]&&Graph->G[V][i]==1){ DFS(Graph...原创 2019-12-18 21:23:02 · 363 阅读 · 0 评论 -
6-3 两顶点之前有路径吗? (20 分)
/* 这个题很简单,就是B题的一种变形,直接把B题的代码copy过来,然后改一下变量就过了*/int hasPath(struct Graph *g, int v, int w){ int vm = 0; int q[1000]; int front = -1, rear = -1; q[++rear] = v; int...原创 2019-12-02 19:49:44 · 937 阅读 · 0 评论 -
6-3 先序输出叶结点 (15 分)-数据结构第5章
void PreorderPrintLeaves( BinTree BT ){ if(!BT)return; if(BT->Left==NULL&&BT->Right==NULL)printf(" %c",BT->Data); PreorderPrintLeaves(BT->Left); PreorderPrintLeaves(BT->Ri...原创 2019-10-24 21:27:59 · 326 阅读 · 0 评论 -
6-2 二叉树的遍历 (25 分)-数据结构第5章
void InorderTraversal( BinTree BT ){ if(!BT)return; InorderTraversal(BT->Left); printf(" %c",BT->Data); InorderTraversal(BT->Right);}void PreorderTraversal( BinTree BT ){ if(!BT)ret...原创 2019-10-24 21:26:50 · 852 阅读 · 0 评论 -
6-1 求二叉树高度 (20 分)-数据结构第5章
int GetHeight( BinTree BT ){ if(BT==NULL)// 如果根为NULL ,则返回0 return 0; int l = GetHeight(BT->Left) + 1; int r = GetHeight(BT->Right) + 1; if(l>r)return l; else return r;}...原创 2019-10-24 21:26:05 · 392 阅读 · 0 评论 -
6-5 小孩报数(顺序循环队列版) (10 分)-数据结构第3章
void InitQueue(SqQueue *&q) //初始化队列;{ q = new SqQueue; for(int i = 0;i<MaxSize;i++) {// cout<<"sd"<<endl; q->name[i] = new char; }// cout<<"sd"<<endl; ...原创 2019-10-24 21:24:53 · 1428 阅读 · 0 评论 -
6-4 带头结点的链队列的基本操作 (10 分)-数据结构第3章
Status QueueInsert(LinkQueue *Q,ElemType e){ LinkList p =(LNode*)malloc(sizeof(LNode)); p->data = e; p->next = NULL; Q->rear->next = p; Q->rear = p; return OK;}Status QueueDe...原创 2019-10-24 21:23:41 · 1112 阅读 · 0 评论 -
6-3 带头结点链栈的操作 (10 分)-数据结构第3章
Status Push(LinkList L,ElemType e){ LinkList p =malloc(sizeof(LinkList)); p->data = e; p->next = L->next; L->next = p; return e; }Status Pop(LinkList L,ElemType *e){ if(!L...原创 2019-10-24 21:23:06 · 567 阅读 · 0 评论 -
6-2 另类堆栈 (15 分)-数据结构第3章
bool Push( Stack S, ElementType X ){ if (S->Top == S->MaxSize) { printf("Stack Full\n"); return false; } S->Data[++S->Top] = X; return true;}ElementType Pop( Stack S ){ if(...原创 2019-10-24 21:22:16 · 270 阅读 · 0 评论 -
6-1 在一个数组中实现两个堆栈 (20 分)-数据结构第3章
Stack CreateStack(int MaxSize){ Stack stk = malloc(sizeof(Stack)); stk->MaxSize = MaxSize; stk->Top1 = -1; stk->Top2 = MaxSize; stk->Data = (int*)malloc(MaxSize*sizeof(int)); retur...原创 2019-10-24 21:21:24 · 485 阅读 · 0 评论 -
7-5 列车调度 (25 分)-数据结构第3章
#include <iostream>using namespace std;#include <set>#include <algorithm>int a,cnt;int main(){ int n; scanf("%d",&n); set<int>st; for(int i = 0;i < n;i++)...原创 2019-10-24 21:20:03 · 884 阅读 · 0 评论 -
7-4 队列操作 (10 分)-数据结构第3章
#include <iostream>using namespace std;#include <string>#include <stack>#include <queue>#include <vector>const int N = 1e5;int q[N] ,hh= 0,tt = -1;// 入...原创 2019-10-24 21:19:18 · 1525 阅读 · 0 评论 -
7-3 银行业务队列简单模拟 (25 分)-数据结构第3章
#include <iostream>using namespace std;#include <string>#include <stack>#include <queue> #include <vector>//int q[N] ,hh= 0,tt = -1;// 入队 //q[++tt] = x;////// ...原创 2019-10-21 11:46:45 · 1052 阅读 · 0 评论 -
7-1 串的模式匹配 (25 分)-数据结构第4章
这个题目主要考的是KMP算法,我感觉KMP算法理解起来有点小困难,但是代码超级短,时间复杂度为(n+m),但是我发现字符串hash更好用一些,而且很容易理解这个是我对字符串hash的介绍,可能不是很全,但是希望大家可以理解我想表达的意思:这个文章中有我对字符串hash的模板https://blog.csdn.net/weixin_44235647/article/details/90181...原创 2019-10-18 10:12:13 · 2094 阅读 · 0 评论 -
程序填空题-数据结构第2章
原创 2019-10-08 21:25:32 · 454 阅读 · 0 评论 -
7-2 链表去重 (25 分) - 数据结构第2章
这个题目我自己开始就是用最传统的方法来做这个题,也就是和选择排序差不多的思路;只不过是不是交换而是删除;也就是先记录下链表当中第一个数字;然后拿这个数字和剩余的数字进行比较,如果相同则把当前这个节点删除,也就是将前一个节点指向该节点的下一个节点(和动态链表中的删除操作一样),然后就把这个删除的节点存到一个容器当中(这里我用的queue),然后接着用链表中的第二个数字,和剩余的数字进行比较,重复...原创 2019-09-23 11:39:47 · 2644 阅读 · 0 评论 -
7-3 约瑟夫环 (25 分)-数据结构第2章
#include <iostream>using namespace std;#include <vector>struct Node{ int data; Node*next;};int main(){ int n, m; cin >> n >> m; vector<int>res; Node * firs...原创 2019-10-07 19:49:38 · 1756 阅读 · 0 评论 -
7-1 重排链表 (25 分)-数据结构第2章
/* 代码非原创*/#include<iostream>#include<vector>#include<cstdio>using namespace std;struct LNode{ int add; int data; int next;}List[100000];int main(){ int fa, n; vec...原创 2019-10-07 19:50:54 · 1489 阅读 · 0 评论 -
6-1 顺序表操作集 (20 分)-数据结构第2章
List MakeEmpty(){ List head =malloc(MAXSIZE*sizeof(struct LNode)); head->Last = 0; return head;}Position Find( List L, ElementType X ){ int i = 0; for(i = 0;i < L-...原创 2019-10-07 19:51:39 · 1465 阅读 · 0 评论 -
6-2 顺序表的有序插入操作 (10 分)-数据结构第2章
int SqInsert(SqList &L,ElemType e){ for(int j = 0;j<L.length-1;j++) { if(L.elem[j]>L.elem[j+1])return 0; } int i; for(i = 0;i<L.length;i++) { if(L.elem[i]>e)break; ...原创 2019-10-07 19:52:16 · 2050 阅读 · 0 评论 -
6-3 尾插法创建单链表(C) (25 分)-数据结构第2章
struct Node* buildLinkedList(int* arr, int n){ struct Node* head = malloc(n*sizeof(struct Node)); struct Node* p = head; int i; for(i = 0;i < n;i++) { struct Node* p...原创 2019-10-07 19:52:53 · 1054 阅读 · 0 评论 -
6-4 带头结点的单链表插入操作 (10 分)-数据结构第2章
int insert_link ( LinkList L,int i,ElemType e){ if(i<=0)return 0; LinkList p = L; LinkList pre = p; int count = 1; if(!L)return 0; while(p) { pre = p; ...原创 2019-10-07 19:53:28 · 3571 阅读 · 0 评论 -
6-5 头插法创建单链表(C) (25 分)-数据结构第2章
struct Node* buildLinkedList(int* arr, int n){ struct Node* head = malloc(n * sizeof(struct Node)); struct Node* p = head; int i; for (i = n-1; i >= 0; i--) { struct Node* pc= malloc(...原创 2019-10-07 19:54:06 · 1151 阅读 · 0 评论 -
6-6 求链式表的表长 (10 分)-数据结构第2章
int Length(List L){ int cnt = 0; List p = L; while (p) { p = p->Next; cnt++; } return cnt;}原创 2019-10-07 19:54:45 · 147 阅读 · 0 评论 -
6-7 链式表的按序号查找 (10 分)-数据结构第2章
ElementType FindKth(List L, int K){ int cnt = 0; List p = L; while (p) { cnt++; if (cnt == K) return p->Data; p = p->Next; } return ERROR;}原创 2019-10-07 19:55:24 · 301 阅读 · 0 评论 -
6-8 单链表逆转 (20 分)-数据结构第2章
List Reverse( List L ){ if(!L)return NULL; List pc = L->Next; List pn = pc; List pre = L; while(pc) { pn = pc->Next; pc->Next = pre; pre = pc; pc = pn; } L->Nex...原创 2019-10-08 21:22:24 · 158 阅读 · 0 评论 -
6-9 删除排序链表中的重复元素 (13 分)-数据结构第2章
/*删除排序链表中的重复元素*/LinkNode* deleteDuplicates(LinkNode* L){ LinkNode* p = L; while (p) { int d = p->data; LinkNode* p1 = p->next; LinkNode* pre = p; while (p1) { if (p1->...原创 2019-10-08 21:22:57 · 935 阅读 · 0 评论 -
6-10 Add Two Polynomials (20 分)-数据结构第2章
/* Your function will be put here */Polynomial Add( Polynomial a, Polynomial b ){ if(!a->Next)return b; if(!b->Next)return a; Polynomial head = malloc(sizeof(Polynomial)); Polynomial p...原创 2019-10-08 21:23:34 · 414 阅读 · 0 评论 -
6-11 判断链表结点对称 (10 分)-数据结构第2章
void DispList(DLinkNode* L){ DLinkNode* p = L->next; int i = 0; while (p) { printf("%c ", p->data); if (p == L->prior)break; p = p->next; } printf("\n");}int Symm(D...原创 2019-10-08 21:24:04 · 650 阅读 · 0 评论