数据结构 栈的应用 链表 指针

栈的应用

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
posted @ 2019-09-18 16:14  柠檬味呀  阅读(239)  评论(0编辑  收藏  举报