简单算法思想02|栈与队列

(队列)数组操作:

两个变量:head与tail,head指向队首,tail指向队尾最后一个位置。
在队首删除一个数是head++,在队尾加一个数是q[tail]=x;tail++;

简单队列:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
int main() {
int q[101]={0,6,3,1,7,5,8,9,2,4},head,tail;
int i;
head = 1;
tail = 10;
while(head<tail)
{
//打印队首并将队首出列
printf("%d",q[head]);
head++;
q[tail]=q[head];
tail++;
//再将队首出列
head++;
}
return 0;
}

队列将是我们今后学习广度优先搜索以及队列优化的 Bellman-Ford 最短路算法的核心 数据结构。所以现在将队列的三个基本元素(一个数组,两个变量)封装为一个结构体类型, 如下。

1
2
3
4
5
6
struct queue
{
int data[100];//队列的主体,用来存储内容
int head;//队首
int tail;//队尾
};

回文字符串 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
#include <string.h>
int main()
{
char a[101],s[101];
int i,len,mid,next,top;
gets(a);
len = strlen(a);
mid = len/2-1;
top = 0;//栈的初始化
for(i=0;i<=mid;i++)//将mid前的字符依次入栈
s[++top]=a[i];
//判断字符串的长度是奇数还是偶数,并找出需要进行字符匹配的起始下标
if (len%2==0) {
next = mid+1;
}else
next=mid+2;
for(i=next;i<=len-1;i++)
{
if(a[i]!=s[top])
break;
top--;
}
if (top==0)
printf("yes");
else
printf("no");
return 0;
}

链表

动态存储:

malloc(4);
malloc函数的作用就是从内存中申请分配指定字节大小的内存空间。上面这行代码就申 请了 4 个字节。

文章目录
  1. 1. (队列)数组操作:
  2. 2. 队列将是我们今后学习广度优先搜索以及队列优化的 Bellman-Ford 最短路算法的核心 数据结构。所以现在将队列的三个基本元素(一个数组,两个变量)封装为一个结构体类型, 如下。
  3. 3. 回文字符串 :
  4. 4. 链表
|