数据结构 栈的应用 链表 指针
栈的应用
1.数制转换
十进制数N转化为r进制数
N N/r N%r
思路 N对r取模直到N/R=0 将余数从下往上写
2.栈的应用--解迷宫问题
按南东北西的优先级走
沿着某个方向走到走不下去再沿着另一个方向走
每个格子有四种可能的状态 0 1 i @
除0外都不能走 i 表示已经在栈内的路
@ 表示已经走过不通的路
1 表示墙
3.链式结构
按需分配空间
指针 &取地址
*取地址指向的值
栈内存与堆内存的区别
https://www.cnblogs.com/jiudianren/p/5671992.html
堆内存的实例
#include <iostream>
using namespace std;
int main() {
int i=10;
char pc[]="Hello";
const double cd=99.2;
static long si=99;
int *pi=new int [100];
delete pi;
cout<<&i<<" "<<&pc<<" "<<&cd<<" "<<&si<<" "<<&pi<<" "<<endl;
}
指针(链接)
https://blog.csdn.net/qq_41035588/article/details/79673674
指针的运算
1.int main() {
char a[20];
int *ptr=(int *)a;
cout<<ptr<<endl;
ptr++;
cout<<ptr<<endl;
}
结果
0x61fea8
0x61feac
指向结构体的指针
p->the data 与*p.the data 功能相同
访问链表内容
for(Node *cur = head;cur!=NULL;cur=cur->next)
cout<<cur->item<<endl;
查找
在遍历的基础上加一个if判断
插入节点
1.插入两节点之间
newPtr->next=prev->next;
prev->next=newPtr;
2.头插法
newPtr->next=head;
head=newPtr;
3.尾插法
newPtr->next=NULL;
prev->NULL=newPtr;
删除
1.删除内部节点
prev->next=cur->next;
2.head=head->next;
被删除的节点空间要被释放
delete cur;
cur=NULL;
C语言链表https://blog.csdn.net/endeavor_g/article/details/80552680