diff --git a/.DS_Store b/.DS_Store index 6091d55..df68f69 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/数据结构/.DS_Store b/数据结构/.DS_Store index d6e5d9c..b23898b 100644 Binary files a/数据结构/.DS_Store and b/数据结构/.DS_Store differ diff --git a/数据结构/code/LinkList.c++ b/数据结构/code/LinkList.c++ new file mode 100644 index 0000000..1d050fc --- /dev/null +++ b/数据结构/code/LinkList.c++ @@ -0,0 +1,155 @@ +/* + * @Description: 单链表 + * @Version: Beta1.0 + * @Author: 【B站&公众号】Rong姐姐好可爱 + * @Date: 2021-03-04 23:38:04 + * @LastEditors: 【B站&公众号】Rong姐姐好可爱 + * @LastEditTime: 2021-03-05 21:30:58 + */ + + + +/* + * @Description: 单链表头插法 + * @Version: Beta1.0 + * @Author: 【B站&公众号】Rong姐姐好可爱 + * @Date: 2020-03-04 23:38:04 + * @LastEditors: 【B站&公众号】Rong姐姐好可爱 + * @LastEditTime: 2020-03-04 23:39:16 + */ +LinkList CreateListWithStartNode(LinkList &L){ + + LNode *s; + int x; + L=(LinkList)malloc(sizeof(LNode)); // 创建头结点L + L->next=NULL; // 初始化空链表 + + // 控制台输入值 + scanf("%d",&x); + + // 输入9999 表示结束 + while(x!==9999){ + // 开辟新结点存储空间 + s=(LNode*)malloc(sizeof(LNode)); + // 结点数据域赋值 + s->data=x; + // 修改指针,新结点插入表中【注意:L->next为头结点的指针域】 + s->next=L->next; + L->next=s; + scanf("%d",&x); + } + + // 返回单链表 + return L; +} + + +/* + * @Description: 单链表尾插法 + * @Version: Beta1.0 + * @Author: 【B站&公众号】Rong姐姐好可爱 + * @Date: 2020-03-04 23:38:04 + * @LastEditors: 【B站&公众号】Rong姐姐好可爱 + * @LastEditTime: 2020-03-04 23:39:16 + */ +LinkList CreateListWithEndNode(LinkList &L){ + + + int x; // 输入结点值 + L=(LinkList)malloc(sizeof(LNode)); + LNode *s; // 新结点s + LNode *r=L; // r为尾指针 + + // 控制台输入值 + scanf("%d",&x); + + while(x!==9999){ + // 开辟新结点存储空间 + s=(LNode *)malloc(sizeof(LNode)); + + // 新结点s的数据域赋值为x + s->data=x; + // 单链表L的尾指针指向新的结点s + r->next=s; + + // 指针r指向新的表尾结点 + r=s; + + scanf("%d",&x); + } + + // 表尾指针置空【重要】 + r->next=NULL; + + // 返回单链表 + return L; + +} + +/* + * @Description: 单链表按序号查找 + * @Version: Beta1.0 + * @Author: 【B站&公众号】Rong姐姐好可爱 + * @Date: 2020-03-04 23:38:04 + * @LastEditors: 【B站&公众号】Rong姐姐好可爱 + * @LastEditTime: 2020-03-04 23:39:16 + */ +LNode *GetElem(LinkList L,int i){ + int j=1; // 查询计数,初始为1 + LNode *p=L->next; // 单链表头结点指针赋值给指针p + + + // 第0个元素,则指向头结点,返回头结点 + if(i==0){ + // 头结点包含数据域和指针域 + return L; + } + + // 不等于0,却小于1,则i为负数无效,直接返回NULL,查询结果空; + if(i<1){ + return NULL; + } + + // p存在且计数没有走到初始i的位置 + while(p&&jnext; + + // 计数标记+1 + j++; + } + + // 注意: 当p不存在时, 跳出循环,p=NULL; 当p存在但是j大于等于i,跳出循环,返回查找的结果,返回p + // 从跳出循环上来分析,p要么存在即:找到的结点元素,要么为空即NULL + + // 跳出循环,返回第i个结点的指针 + return p; + +} + +/* + * @Description: 单链表按值查找 + * @Version: Beta1.0 + * @Author: 【B站&公众号】Rong姐姐好可爱 + * @Date: 2020-03-04 23:38:04 + * @LastEditors: 【B站&公众号】Rong姐姐好可爱 + * @LastEditTime: 2020-03-04 23:39:16 + */ +LNode *LocateElem(LinkList L,ElemType e){ + + // 指针【哨兵】 + LNode *p=L->next; + // 从第1个结点开始查找数据域(data)为e的结点 + while(p!=NULL&&p->data!=e){ + // 无法匹配,指针后移 + p=p->next; + } + + // 注意:p为NULL的时候,说明单链表已经遍历的尾结点了,跳出循环,没有找到目标结点; + + // 查找到第1个匹配的结点,跳出循环,返回结点指针 + return p; + // +} + diff --git a/数据结构/数据结构.xmind b/数据结构/数据结构.xmind index bd51e1f..7126ca5 100644 Binary files a/数据结构/数据结构.xmind and b/数据结构/数据结构.xmind differ diff --git a/数据结构/线性表/线性表的存储结构.png b/数据结构/线性表/线性表的存储结构.png new file mode 100644 index 0000000..a1dd540 Binary files /dev/null and b/数据结构/线性表/线性表的存储结构.png differ diff --git a/数据结构/线性表/顺序表插入平均时间复杂度计算.png b/数据结构/线性表/顺序表插入平均时间复杂度计算.png new file mode 100644 index 0000000..0eede62 Binary files /dev/null and b/数据结构/线性表/顺序表插入平均时间复杂度计算.png differ diff --git a/数据结构/线性表/顺序表随机删除元素的平均复杂度计算.png b/数据结构/线性表/顺序表随机删除元素的平均复杂度计算.png new file mode 100644 index 0000000..020bbda Binary files /dev/null and b/数据结构/线性表/顺序表随机删除元素的平均复杂度计算.png differ