1, 队列:
基本概念: 队列是一种特殊的线性结构,它只允许在队列的首部(head)进行删除操作(称为出队);而在队列的尾部(tail)进行插入操作(入队)。而当队列中没有元素时(即 head == tail),称为空队列。First In First Out(FIFO)原则
算法应用:队列是广度优先搜索以及队列优化的 Bellman_Ford 最短路算法的核心数据结构。
基本元素:一个数组,两个变量
基本概念: 队列是一种特殊的线性结构,它只允许在队列的首部(head)进行删除操作(称为出队);而在队列的尾部(tail)进行插入操作(入队)。而当队列中没有元素时(即 head == tail),称为空队列。First In First Out(FIFO)原则
算法应用:队列是广度优先搜索以及队列优化的 Bellman_Ford 最短路算法的核心数据结构。
基本元素:一个数组,两个变量
其封装结构休类型:
<span style="white-space:pre"> </span>struct queue {
int data[100];//队列主体,存储内容
int head;//队首索引
int tail;//队尾索引
};
定义结构体变量:struct queue q;
队列操作的简单Damo:
//初始化
void init(){
}
//是否为空队列:返回1为空;
int isEmpty() {
retrun q.head == q.tail;
}
//入队列
boolean push(int data) {
//这里不进行队列满的情况
}
//实例这里后面再补上
2, 栈:
基本概念:栈限定为只能在一端进行插入和删除操作,是一种后进先出的数据结构。
基本元素: 一个一维数组,一个指向栈顶的变量 top:
int data[100];
int top = 0;
//实例这里后面再补上
3, 链表:
基本概念:
实现链表: 1,需要使用指针和动态分配内存函数 malloc来实现。
<span style="white-space:pre"> </span>#include <stdlib.h>
int *p;
p = (int *) malloc(sizeof(int)); //int* 以 int 4个字节的连续内存来作为一个整体来存放整数。
其封装结构体:
struct node {
int data;
struct node *next;
}
建立链表基本步骤如下:
//头指针的作用是方便以后从头遍历整个链表。
struct node *head;
// 头指针初始为空
head = NULL;
//创建第一个结点
struct node *p;
//动态申请空间
p = (struct node *) malloc (sizeof(struct node));
scanf("%d",a);
//将数据存储到当前结点
p->data = a;
p->next = NULL;
if(head == NULL) {
head = p;//保存头结点
}else{
q->next = p;//将上一结点的后继指针指向当前结点
}
q = p;//导向新结点;