
数据结构
数据结构
那时的样子_
coder
展开
-
【数据结构】单链表—递增有序单链表删除重复元素
递增有序单链表删除重复元素在一个递增有序的线性表中,有数值相同的元素存在,若存储方式为单链表,设计算法去掉数值相同的元素,使表中不再有重复的元素。#include<stdio.h>#include<stdlib.h>struct Lnode{ int data; Lnode *next; };int Init(struct Lnode ......原创 2019-09-27 14:41:13 · 5956 阅读 · 0 评论 -
【数据结构】线性结构—反向输出单链表
要求: 有带头节点的单链表L,编写算法实现从尾到头反向输出每个结点的值。分析:这里有一种思路是利用栈,在正向遍历单链表的时候进行入栈,然后遍历完成之后依次出栈,既可实现反向输出。既然可以用栈,那么也可以用递归的方式来实现。然而递归是利用的栈,实质上是相同的。递归的时候,系统需要设立一个“工作栈”作为整个递归函数运行期间使用的数据存储区。每递归一次,则需要入存实在参数,所有局部变量以及上一...原创 2019-09-20 17:28:08 · 948 阅读 · 0 评论 -
【数据结构】单链表—排序
使单链表递增有序代码如下#include<stdio.h>#include<stdlib.h>struct Lnode{ int data; Lnode *next;};int Init(struct Lnode *L, int i){ struct Lnode *p; struct Lnode *q=L; int j...原创 2019-09-22 14:50:16 · 446 阅读 · 0 评论 -
【数据结构】线性结构—有序顺序表
查找递增顺序表中的元素要求:在递增的的线性表中查找数值为x的元素,若找到则将其与后继元素位置互换,若找不到,则将其插入到表中并使表依然有序。分析:这里是递增的顺序表,所以采用折半查找的方式较为高效。若没有找到数值为x的元素,只需要将x插入到折半查找结束的min位置之后或者之前就行这里是顺序表,插入元素则需要将待插入位置之后的所有元素后移一位。下面展示实现代码:#include<...原创 2019-09-20 16:00:26 · 1698 阅读 · 0 评论 -
【数据结构】单链表—递归输出倒数第k个元素
在不改变单链表的前提下,请查找链表中倒数第k(k为整数)个位置的结点。#include<stdio.h>#include<stdlib.h>struct Lnode{ int data; Lnode *next; };int Init(struct Lnode *L, int i){ struct Lnode *p; s...原创 2019-09-29 19:52:36 · 1946 阅读 · 0 评论 -
【数据结构】单链表—逆置
将单链表逆置,是的辅助空间复杂度为O(1)#include<stdio.h>#include<stdlib.h>struct Lnode{ int data; Lnode *next; };int Init(struct Lnode *L, int i){ struct Lnode *p; struct Lnode *q=L;...原创 2019-09-21 18:47:37 · 376 阅读 · 0 评论 -
【数据结构】单链表—单链表拆分
将一个带有头结点的单链表A分为两个带头结点的单链表A和B,使得A表中含有原表中序号为奇数的元素,而表B中含有原表中序号为偶数的元素,且保持相对顺序不变。#include<stdio.h>#include<stdlib.h>struct Lnode{ int data; Lnode *next; };int Init(struct Lnode...原创 2019-09-28 15:13:29 · 1540 阅读 · 0 评论 -
【数据结构】单链表—删除表中数值介于给定值之间的元素
设在一个带头结点的单链表中所有元素结点的数据值无序,试编写一个函数,删除表中所有介于给定的两个值(作为函数参数给出)之间的元素的元素//带头结点的单链表无序//删除数比表中所有值介于在两个给定值(作为函数参数给出)之间的元素。#include<stdio.h>#include<stdlib.h>struct Lnode{ int data; Ln...原创 2019-09-23 14:26:48 · 1271 阅读 · 0 评论 -
【数据结构】单链表—无序单链表递增输出
给定一个带头结点的单链表,设head为头指针,使其按递增次序输出单链表中各个结点的数据元素,并释放结点所占的存储空间(要求:不允许使用数组作为辅助空间)#include<stdio.h>#include<stdlib.h>struct Lnode{ int data; Lnode *next;};int Init(struct Lnode *L...原创 2019-09-24 16:05:15 · 1310 阅读 · 0 评论 -
【数据结构】线性表的顺序存储结构
#将顺序表中的最小元素删除,由最后一个元素代替,并返回最小元素。…#include<stdio.h>#include<stdlib.h>int Del_Min(int *L){int min=L[0];int l= 0;int i=0;while(L[i]!=NULL){if(min>L[i]){min= L[i];l=i;}i++;...原创 2019-09-05 10:03:59 · 159 阅读 · 0 评论 -
【数据结构】线性表的链式存储结构
线性表的链式存储结构一个含头结点的单链表,每个表结点含有一个数据域一个指针域。#include<stdio.h>#include<stdlib.h>struct Lnode{ int data; Lnode *next;};int Init(struct Lnode *L, int i){ struct Lnode *p; struct Lnode...原创 2019-09-02 14:34:17 · 282 阅读 · 0 评论 -
【数据结构】线性结构—顺序表求并集
#include<stdio.h>#define MaxSize 30struct SqList{ int data[MaxSize]; int length;};int union(struct SqList *L1,struct SqList *L2,struct SqList *L3){ if(L1->length == 0&&a...原创 2019-09-06 21:47:16 · 989 阅读 · 0 评论 -
【数据结构】线性结构—循环队列及其基本操作
通过顺序表存储队列。当入队是时队尾指针+1,出队时队头指针也+1。通过取余运算使队头指针和队尾指针在顺序表的表头和表尾移动以实现循环。当队为空队时候,队头指针和队尾指针都指向同一个位置。当队非空的时候队尾指针指向队尾元素的下一位。那么若队满的时候,队尾指针又和队头指针同时指向同一个位置。若不做处理,则队空和队满的时候都会出现Q->front == Q->rear成立。逻辑上就不能...原创 2019-09-08 11:19:34 · 621 阅读 · 0 评论 -
【数据结构】线性结构—队列链式存储结构及基本操作
#include<stdio.h>#include<stdlib.h>struct QNode{ int data; QNode *next;};struct LinkQueue{ QNode *front;//队头指针 QNode * rear;//队尾指针};int InitQueue(struct LinkQueue ...原创 2019-09-08 10:09:54 · 254 阅读 · 0 评论 -
【数据结构】排序—希尔排序
#include<stdio.h>#define MaxSize 30struct SqList{ int data[MaxSize]; int length;};int Init(struct SqList *L,int i){ int j = 1; for(;j<i+1;j++) scanf("%d",&...原创 2019-09-10 10:17:50 · 133 阅读 · 0 评论 -
【数据结构】线性表的顺序存储结构-有序表合并
#将两个有序顺序表合并为一个有序表请看代码、、、#include<stdio.h>#define MaxSize 30struct SqList{int data[MaxSize];int length;};int merge(struct SqList *A,struct SqList *B,struct SqList *C){if(A->lengt...原创 2019-09-06 09:04:18 · 2504 阅读 · 0 评论 -
【数据结构】二叉树的创建
二叉树创建先收工得到二叉树的先序遍历结果,若非最深层次的结点,但是缺少左孩子或右孩子则将其孩子位置以0代替。同时给出了先序遍历代码#include<stdio.h>#include<stdlib.h>struct BNode{ int data; BNode *left; BNode *right;};int BInit(struc...原创 2019-09-08 08:54:19 · 824 阅读 · 0 评论 -
【数据结构】线性结构—栈的基本操作
#define STACK_INNIT_SIZE 20#define STACKINCRMENT 5struct SqStack{ int *base; int *top; int stacksize;};int InitStack(struct SqStack *S)//构造空栈{ S->base = (int *)malloc(STACK_IN...原创 2019-09-08 08:46:37 · 299 阅读 · 0 评论 -
【数据结构】排序—冒泡排序
#include<stdio.h>#define MaxSize 30struct SqList{ int data[MaxSize]; int length;};int Init(struct SqList *L,int i){ int j = 1; for(;j<i+1;j++) scanf("%d",&...原创 2019-09-10 15:02:22 · 119 阅读 · 0 评论 -
【数据结构】单链表判断结点是否递增
#include<stdio.h>#include<stdlib.h>struct Lnode{int data;Lnode *next;};int Init(struct Lnode *L, int i){struct Lnode *p;struct Lnode *q=L;int j=0;while(j<i){ p = (st...原创 2019-09-06 10:34:36 · 1831 阅读 · 2 评论 -
【数据结构】二分查找(折半查找)
#include<stdio.h>#define MaxSize 30struct SqList{ int data[MaxSize]; int length;};int Init(struct SqList *L,int i){ int j = 0; for(;j<i;j++) scanf("%d",&(...原创 2019-09-09 21:42:21 · 192 阅读 · 0 评论 -
【数据结构】排序—直接插入排序
#include<stdio.h>#define MaxSize 30struct SqList{ int data[MaxSize]; int length;};int Init(struct SqList *L,int i){ int j = 1; for(;j<i+1;j++) scanf("%d",&...原创 2019-09-10 10:39:20 · 159 阅读 · 0 评论 -
【数据结构】线性表的链式存储结构—删除单链表L中值为x的结点的直接前驱结点
请看代码:#include<stdio.h>#include<stdlib.h>struct Lnode{ int data; Lnode *next;};int Init(struct Lnode *L, int i){ struct Lnode *p; struct Lnode *q=L; int j=0; ...原创 2019-09-06 16:15:35 · 6127 阅读 · 0 评论