![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构学习笔记
数据结构学习笔记
刘璐菲
southern cross university
展开
-
二叉树的非递归遍历前中后序和层次遍历
#include<stdio.h>#include<stack.c>#include<stdbool.h>#include<SquenceNode.c>#define MaxSize 20typedef struct TreeNode *BinTree;typedef BinTree Position;typedef int ElementType;//二叉树的链式存储结构struct TreeNode{ ElementTy原创 2020-10-20 18:20:38 · 720 阅读 · 1 评论 -
二叉树的链式存储结构以及三种遍历方式(递归)
#include<stdio.h>typedef struct TreeNode *BinTree;typedef BinTree Position;typedef int ElementType;//二叉树的链式存储结构struct TreeNode{ ElementType Data; BinTree Left; BinTree Right;};/** * 先序遍历 * 跟左右 * */void PreOrderTraversal(Bin原创 2020-10-19 21:57:07 · 1015 阅读 · 0 评论 -
01-复杂度2 Maximum Subsequence Sum (25分)
题目地址PTA最大子列和输入样例10-10 1 2 3 4 -5 -23 3 7 -21输出样例10 1 4#include<stdio.h>int main(){ int n; scanf("%d",&n); int num[n]; for(int i = 0; i<n; i++) { scanf("%d",&num[i]); } int sum = -100000;原创 2020-10-10 22:10:28 · 86 阅读 · 0 评论 -
c语言最大子列和最笨的算法,待补充
输入样例6-2 11 -4 13 -5 -2输出样例20#include<stdio.h>int main(){ int n; scanf("%d",&n); int num[n]; for(int i = 0; i<n; i++) { scanf("%d",&num[i]); } int sum = 0; for(int i = 0; i<n ; i++.原创 2020-10-10 21:09:21 · 124 阅读 · 0 评论 -
C语言数据结构应用之多项式相加
#include<stdio.h>#include<stdlib.h>//Polynomial//coef 系数//expon 指数struct PolyNode{ int coef; int expon; struct PolyNode *link;};typedef struct PolyNode *Polynomial;//函数声明void Attach(int c, int e, Polynomial *pRear);int原创 2020-10-10 10:49:30 · 1394 阅读 · 0 评论 -
C语言数据结构队列的插入和删除
#include<stdio.h>#include<stdlib.h>#define OK 1#define ERROR 0typedef int ElementType;typedef struct Node *PtrToNode;typedef int Status;/*队列中的结点*/struct Node{ ElementType Data; PtrToNode Next;};typedef PtrToNode Position;//队原创 2020-10-09 22:05:45 · 3816 阅读 · 1 评论 -
C语言队列的顺序存储结构,入队和出队
#include<stdio.h>#include<stdlib.h>#define ERROR 0#define OK 1#define MaxSize 20typedef int ElementType;typedef int Status;struct QNode{ ElementType Data[MaxSize]; int rear; int front; //front 指向队列中队首的前一个};typedef st原创 2020-10-09 20:25:40 · 1982 阅读 · 1 评论 -
c语言堆栈链式存储结构
#include<stdio.h>#include<stdlib.h>#define ERROR 0#define OK 1typedef int ElementType;typedef int Status;struct SNode{ ElementType data; struct SNode *Next;};typedef struct SNode *Stack;/** * 堆栈初始化,创建一个堆栈的头结点,指向null * */S原创 2020-09-09 21:51:49 · 192 阅读 · 0 评论 -
c语言数据结构共享堆栈
#include<stdio.h>#define MaxSize 20#define ERROR 0#define OK 1typedef int ElementType;typedef struct DStack *Stack;//共享栈struct DStack{ ElementType Data[MaxSize]; int Top1; //堆栈1的栈顶指针 int Top2; //堆栈2的栈顶指针}S;/** * 存放数据 *原创 2020-09-08 18:04:57 · 255 阅读 · 0 评论 -
c语言数据结构堆栈入栈出栈
#include<stdio.h>#define MaxSize 20#define ERROR 0#define OK 1typedef int ElementType;typedef struct SNode *Stack;struct SNode{ ElementType Data[MaxSize]; int Top;};/** * 入栈 * */void Push(Stack PtrS, ElementType item){ //入栈前原创 2020-09-08 17:33:16 · 864 阅读 · 0 评论 -
数据结构单项链表复习
1.按位置查找/** * 找到链表第X个节点 * */Node * findNodeAtX(Node *head,int x){ int j = 1; Node *findNode = head; while(findNode!=NULL && j<x) { findNode = findNode->next; j++; } //如果改成if(p==NULL)return原创 2020-09-07 11:56:26 · 111 阅读 · 1 评论 -
数据结构之创建单链表详细注释
void createLinkList(Node **Phead){ int length; printf("请输入结点个数"); scanf("%d",&length); for(int i = 0; i<length; i++) { //创建新的结点来保存用户的输入 Node *p = (Node *)malloc(sizeof(Node)); printf("请输入结点保存的数据"); scanf("%d",&p->data); p-&.原创 2020-09-07 09:56:35 · 255 阅读 · 0 评论 -
c语言数据结构链表创建的四种方式
void main(){ Node *head = NULL; //第一种通过返回值来接收创建好的链表 //Node * createLinkList(); head = createLinkList(); //第二种,传入指向结点的指针 //void createLinkList(Node *head); createLinkList(head); //第三种,传入指向结点指针的指针 //void createLinkList(Node **Phead); createLinkLi原创 2020-09-06 19:31:44 · 1879 阅读 · 0 评论 -
线性表链式存储结构之单链表的访问、插入、删除
在访问,插入和删除时,给Node *p赋值是赋头结点还是赋第一个结点?在循环和判断时是使用p还是p->next呢?#include<stdio.h>#include<stdlib.h>//函数执行后返回的状态值#define OK 1#define ERROR 0//函数执行后返回的状态值typedef int Status;//元素的数据类型,这里假设为inttypedef int ElemType;//组成链表的单个结点的结构体typedef st原创 2020-09-02 16:46:17 · 833 阅读 · 0 评论 -
第二章P23-4删除s与t之间的元素
/** * 删除从s到t之间所有元素闭区间 * */Status deleteElemStoT(SqList *List,int s, int t){ if(List->length==0) { return ERROR; } else if(s <= 0 || t > List->length) { return ERROR; } else if(s >= t) {原创 2020-08-31 20:26:56 · 137 阅读 · 0 评论 -
第二章p19-3删除线性表中所有值为x的元素
3.对长度为n的顺序表L,编写一个时间复杂度为O(n),空间复杂度为O(1)的算法,该算法删除线性表中所有值为x的数据元素。/** * 删除线性表中所有值为x的数据元素 * */void deleteXElem(SqList *List, ElemType x){ int k = 0; //用于记录值不等于x的元素的个数 for(int i = 0; i < List->length; i++) { if(List->data[i] !=原创 2020-08-23 22:01:37 · 552 阅读 · 0 评论 -
第二章p19-2将顺序表逆序空间复杂度为O(1)
2.设计一个高效算法,将顺序表L的所有元素逆序,要求算法空间复杂度为O(1);如果新创建一个同样大小的顺序表,在复制原来表中的元素到新的顺序表,这时候的空间复杂度为O(n)不符合题目要求,只能是前半部分与后半部分交换,利用:前半部分交换元素的坐标 + 对称后半部分交换元素的坐标 = 数组长度 - 1/** * 空间复杂度为O(1)将顺序表逆序 * */void reverseList(SqList *List){ ElemType temp; for(int i = 0原创 2020-08-23 21:20:13 · 549 阅读 · 0 评论 -
第二章P19-1从顺序表中删除最小值的元素并由函数返回被删除的值
1.从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删除元素的值。空出的位置由最后一个元素填补,若顺序表为空则显示出错信息并退出运行。/** * 从顺序表中删除具有最小的元素(假设唯一)...... * */ElemType deletMinElem(SqList *List){ int position = 0; ElemType min = List->data[position]; if(List->length == 0) {原创 2020-08-23 20:46:19 · 1230 阅读 · 0 评论 -
C语言线性表顺序存储结构(静态)以及元素的获取、插入、遍历(复习)
/*################################################## C语言线性表顺序存储结构(静态)以及元素的获取,插入和删除 # ##################################################*/#include<stdio.h>//定义状态值,作为函数的返回值。 OK表示执行成功,ERROR表示执行失败#define OK 1#define ERROR 0//顺序表的最大容量#define MAXSI原创 2020-08-19 23:31:35 · 998 阅读 · 0 评论 -
C语言单向链表应用之多项式创建,遍历,相加
一、多项式创建和遍历的代码#include<stdio.h>#include<stdlib.h>struct node{ //指数 int exp; //系数 float coef; struct node *next;};//简写typedef struct node Node;//函数的声明Node *creatList();void DisList(Node *head);int main(int argc,原创 2020-06-21 11:47:35 · 1359 阅读 · 0 评论 -
C语言单向链表的创建 插入 删除 查找 遍历
一、单向链表C语言代码#include<stdio.h>#include<stdlib.h>//定义数据类型,假设为inttypedef int ElemType;//定义自引用结构体(结点)struct node{ ElemType data; struct node *next;};//typedef为了简写struct nodetypedef struct node Node;/*** 链表各种函数的声明*///创建链表函数声明原创 2020-06-20 21:42:07 · 1384 阅读 · 3 评论 -
C语言单向链表创建和遍历
1.什么是链表?链表是一种常见的数据结构,链表是由多个结点(自引用结构体)串成的表。什么是自引用结构体?自引用结构体是一种特殊的结构体类型,它有一个指针类型的成员,这个指针成员指向与这个结构体一样的类型。链表就是由一个一个结点(自引用结构体),结点被指针串起组成的表。链表的头指针,头节点链表中指向第一个结点的指针,一般新建一个头节点用于存放头指针,头节点可有可无,但是头指针必须要有。只有通过头指针我们才能找到链表,遍历链表中的每一个结点。2.创建链表步骤分解1.结构体声明struct no原创 2020-06-20 14:57:41 · 1831 阅读 · 0 评论 -
C语言数据结构线性表顺序存储结构(插入、删除、获取)
一、代码#include<stdio.h>#define MAXSIZE 20 /*存储空间初始分配量*/#define OK 1#define ERROR 0//元素数据类型,假设为int。typedef int ElemType;//线性表的结构定义typedef struct{ ElemType data[MAXSIZE]; /*数组存储数据元素,最大值为MAXSIZE*/ int length; /*线性表当前的长度*/}SqList;//状态原创 2020-06-18 17:50:18 · 4273 阅读 · 2 评论 -
数据结构自测题
#include<stdio.h>#include<math.h>void printSpace(int maxAmountOfSymInLine, int amountOfSymbolInLine);void printfSymbol(int amountOfSymbolInLine, char symbol);int main(int argc, char const *argv[]){ //用户提供的符号数 int amountOfSymbol=.原创 2020-06-17 09:45:10 · 270 阅读 · 0 评论 -
day2of22
原创 2020-01-02 00:10:28 · 68 阅读 · 0 评论 -
day01of22
原创 2019-12-31 17:03:18 · 66 阅读 · 0 评论