拓扑排序是一个有向无环图G=(V,E)中所有结点的一种线性排序。
(
#include<bits/stdc++.h>
包含C++的所有头文件)
vector(封装数组)
初始化:
vector<int>a(10);//定义十个整型向量
vector<int>a(10,1);//十个向量赋值为1
vector<int>a(b);//b给a赋值
int a[5]={0,1,2,3,4};
vector<int>b(a,a+5);
vector对象的常用内置函数
a.size():返回a在内存中总共可以容纳的元素个数。
a.push_back(2):在a的第一个元素位置插入数值2
set(封装二叉树)
在set中每个元素的值都是唯一的,而且系统能根据数据的值自动排序。(注意其中的元素不能直接被改变)
a.count:count函数用于计数容器中目标元素的个数
insert(key)函数:将key插入到set中
queue(封装队列)
push函数:在队列尾部插入一个元素
empty函数:判断队列是否为空,若为空则返回true
front函数:返回队列中第一个进入的元素,(就是第一个元素)
pop函数:将队列中最靠前位置的元素去掉,是无返回值的void函数
memset函数
memset()通常为新申请的内存进行初始化工作,它直接操作内存空间
它的原型是include<string.h>
void *memset(void *s,int c,unsigned long n);
//功能:将指针变量s所指向的前n字节的内存单元用一个整数c替换。
memset()作用是在一段内存块中填充某个给定的值
memecpy函数
声明在string.h中
void *memcpy(void *destin,void *source,unsigned n);
以source指向的地址为起点,将连续的n个字节数据,复制到以destin指向的地址为起点的内存中。
第一个是目标地址,第二个是源地址,第三个是数据长度。
数据长度的单位是字节
该函数有一个返回值,类型是void*,是一个指向destin的指针。
链表
链表:将结构体变量通过指针连接在一起
结构:
struct Node{
int data;//数据域
struct Node* next;//指针域
};
动态创建一个链表
- 创建链表(创建一个表头表示整个链表)
- 创建结点
- 插入结点
- 删除节点
- 打印遍历链表
struct Node{
int data;//数据域
struct Node* next;//指针域
};
struct Node* creatlist()//创建链表
{
struct Node* headNode =(struct Node*)malloc(siezof(struct Node));
//headNode成为了结构体变量
//变量使用前必须初始化
headNode->next=NULL;
return headNode;
}
struct Node* creatNode(int data)//创建结点
{
struct Node* newNode=(struct Node*)malloc(sizeof(struct Node));
newNode->data=data;
newNode->next=NULL;
return newNode;