
数据结构
晚风难免些许微凉
树先生
展开
-
三元组表形式表示稀疏矩阵,实现两个矩阵的加法、减法
#include <iostream>#include <stdio.h>#define maxsize 100using namespace std;typedef int ElemType;typedef struct{ int r, c; /*行号、列号*/ int d; /*非零元素值*/} TupNode;typedef struct{ int rows,cols,nums; /*行数、列数、非零元素.原创 2021-12-05 13:00:38 · 3852 阅读 · 1 评论 -
链式二叉树的实现以及遍历
二叉树的链式表示以及遍历原创 2021-12-02 17:30:56 · 1501 阅读 · 2 评论 -
循环队列的顺序表示和实现
一、顺序队列的存储结构#define MAXSIZE 100//队列可能达到的最大长度typedef int QElemType;//队列的顺序存储结构typedef struct{ QElemType *base;//存储空间的基地址 int front;//头指针 int rear;//尾指针} SqQueue;二、循环队列的初始化算法步骤:(1)为队列分配一个最大容量为MAXSIZE的数组空间,base指向数组空间的首地址。(2)头指针和尾指针置原创 2021-11-11 16:43:45 · 476 阅读 · 0 评论 -
链栈基本操作的实现
一、链栈的存储结构typedef int SElemType;//链栈的存储结构,与单链表相同typedef struct StackNode{ SElemType date;//数据域 struct StackNode *next;//指针域} StackNode,*LinkStack;二、链栈的初始化链栈的初始化操作就是构造一个空栈,因为不用设头结点,所以直接将栈顶指针置空。//链栈的初始化int InitStack(LinkStack &S).原创 2021-11-11 16:09:23 · 7612 阅读 · 6 评论 -
队列的链队表示和实现
一、链队的存储结构//队列的链式存储结构typedef int QElemType;typedef struct QNode{ QElemType data; struct QNode *next;} QNode,*QueuePtr;typedef struct{ QueuePtr front;//队头指针 QueuePtr rear;//队尾指针} LinkQueue;二、链队的初始化算法步骤:(1)生成新的结点作为头结点,队头队.原创 2021-11-10 19:18:01 · 1030 阅读 · 0 评论 -
顺序栈的基本操作的实现
一、顺序栈的存储结构#define MAXSIZE 100typedef int SElemType;typedef struct{ SElemType *base;//栈底指针 SElemType *top;//栈顶指针 int stacksize;//栈可用的最大容量} SqStack;二、顺序栈的初始化算法步骤:(1)为顺序栈分配一个最大容量为MAXSIZE的数组空间,使base指向这段空间的基地址,即栈底。(2)栈顶指针top初始为bas.原创 2021-11-08 20:54:07 · 2401 阅读 · 0 评论 -
顺序表基本操作的实现
一、顺序表的初始化算法步骤:(1)为顺序表L动态分配一个预定大小的数组空间,使elem指向这段空间的基地址。(2)将表的当前长度设为0。typedef int ElemType;typedef struct{ ElemType *elem; int length;} SqList;//顺序表的初始化void InitList(SqList &L){ L.elem=new ElemType[MAXSIZE]; if(!L.elem)原创 2021-11-07 23:56:08 · 2320 阅读 · 2 评论 -
单链表基本操作的实现——前插法与后插法创建单链表
一、前插法创建单链表算法步骤:(1)创建一个只有头结点的空链表。(2)根据创建链表包括的元素n,循环n次以下操作: 生成新结点;——>输入元素值赋给新结点数据域;——>将新结点插入到头结点之后。//前插法创建单链表void CreateList_H(LinkList &L,int n){ //逆位序输入n个元素的值,建立带头结点的单链表L L=new LNode;//先建立一个带头结点的单链表 L->next...原创 2021-11-07 19:46:29 · 7028 阅读 · 0 评论 -
单链表基本操作的实现——初始化、取值、查找、插入、删除
#include <iostream>using namespace std;typedef int ElemType;typedef struct LNode{ ElemType date;//结点的数据域 struct LNode *next;//结点的指针域} LNode,*LinkList; //LNode现在等价于struct LNode,LinkList为指向结构体LNode的指针类型//单链表的初始化void InitList(LinkList .原创 2021-11-06 21:57:52 · 3736 阅读 · 0 评论 -
单链表基本操作的实现——输出
//输出void OutputList(LinkList &L){ LinkList p=L->next;//指向首元结点 while(p!=NULL)//当前结点不为空 { cout<<p->date<<endl;//输出当前结点数据 p=p->next;//P指向下一结点 }}...原创 2021-11-06 21:54:22 · 1301 阅读 · 0 评论 -
单链表基本操作的实现——求单链表的长度
//求单链表长度int ListLength(LinkList &L)//返回值类型为int{ LinkList p=L;//p指针指向头结点 int i=0;//用于计数,初值为0 while(p->next!=NULL)//只要结点指针域不为空 { i++; p=p->next;//p指向下一结点 } return i;}...原创 2021-11-06 21:49:57 · 2956 阅读 · 2 评论 -
单链表基本操作的实现——删除
//删除void deleteElem(LinkList &L, ElemType e){ LinkList p = L; LinkList q = NULL; while(p->next != NULL) { if(p->next->e == e) { q = p->next;//临时保存被删除结点的地址以备释放 p->next = p->ne.原创 2021-11-06 21:41:45 · 11038 阅读 · 0 评论 -
单链表基本操作的实现——查找
1、查找数据是否存在//查找数据是否存在bool hasList(LinkList &L,ElemType e){ LinkList p=L->next;//让p指向首元结点 while(p->next!=NULL)//p指向的结点指针域不为空 { if(p->date==e)//p结点的数据域与需要查询的数据进行比对 { return true;//如果相等,返回true .原创 2021-11-06 20:30:04 · 1087 阅读 · 0 评论 -
单链表基本操作的实现——取值
在带头结点的单链表L中根据序号i获取元素的值,用e返回L中第i个数据元素的值。//取值int GetElem(LinkList L,int i,ElemType &e){//在带头结点的单链表L中根据序号i获取元素的值,用e返回L中第i个数据元素的值 LinkList p=L->next;//初始化,p指向首元结点 int j=1;//计数器初值赋为1 while(p&&j<i)//顺链域扫描,直到p为空或p指向第i元素 {.原创 2021-11-06 19:37:41 · 2213 阅读 · 0 评论 -
单链表基本操作的实现——插入
将值为e的新结点插入到链表中,这里插到头结点和首元结点之间。算法步骤:1、生成一个新结点*s。2、将结点的数据域置为e。3、将新结点的指针域指向插入结点的后一结点,这里是首元结点4、将头结点指针域修改为指向插入的结点*s//单链表的插入void ListInsert(LinkList &L,ElemType e){ LinkList s=new LNode;//生成一个新结点*s s->date=e;//将结点的数据域置为e s-&.原创 2021-11-06 18:56:34 · 12977 阅读 · 1 评论 -
单链表基本操作的实现——初始化
单链表的初始化操作就是构建一个空表步骤:1、生成新的结点作为头结点,用头指针指向头结点。2、头结点的指针域置空。#include <iostream>using namespace std;typedef int ElemType;typedef struct LNode{ ElemType date;//结点的数据域 struct LNode *next;//结点的指针域}LNode,*LinkList;//LNode现在等价于struct ..原创 2021-11-06 18:49:53 · 3741 阅读 · 0 评论