当前位置: 首页 > news >正文

永康市建设银行网站查询wordpress 不发布文章

永康市建设银行网站查询,wordpress 不发布文章,泸县城乡住房建设厅网站,设计制作费属于税收分类编码1.二级指针的使用二级指针: 1. 在被调函数中,想要修改主调函数中的指针变量,需要传递该指针变量的地址,形参用二级指针接收。 2.指针数组的数组名是一个二级指针,指针数组的数组名作为参数传递时,可用二级指…

1.二级指针的使用

二级指针:
1. 在被调函数中,想要修改主调函数中的指针变量,需要传递该指针变量的地址,形参用二级指针接收。
2.指针数组的数组名是一个二级指针,指针数组的数组名作为参数传递时,可用二级指针接收。

指针数组:保存多个指针的数组。

数组名:数组首元素地址。

2.内核链表

内核链表:双向循环链表
不再将数据存储在链表节点中,而是将结点嵌入到存储的数据中。

包含的宏:

offset_of : 获取内核链表中链表结点到结构体起始位置的偏移量。
container_of:通过偏移量,获取结构体的首地址(结点首地址-偏移量)。

3.栈

(1)基本概念

①系统栈

特点:先进后出: FILO

②数据结构的栈

栈:只允许从一端进行数据的插入和删除的线性存储结构,称之为栈结构

特点:先进后出: FILO

                                    

a.顺序栈

 满增栈、满减栈、空增栈、空减栈

满栈、空栈:栈顶所在位置是否存在数据

增栈、减栈:按照栈的生长方向区分

b.链式栈

(2)基本操作

①创建一个栈

Stack_t *create_stack()
{Stack_t *pstack = malloc(sizeof(Stack_t));if(NULL == pstack){return NULL;}pstack->clen = 0;pstack->ptop = NULL;return pstack;
}

②判断一个栈是否为空

int is_empty_stack(Stack_t *pstack)
{return NULL == pstack->ptop;
}

③遍历

int stack_for_each(Stack_t *pstack)
{STNode_t *ptmp = pstack->ptop;if(NULL == pstack){return -1;}else{while(ptmp != NULL){printf("%d  ", ptmp->data);ptmp = ptmp->pnext;}puts("");}
}

④插入

int push_stack(Stack_t *pstack, Data_t data)
{STNode_t *ptmp = malloc(sizeof(STNode_t));if(NULL == ptmp){return -1;}ptmp->data = data;ptmp->pnext = NULL;ptmp->pnext = pstack->ptop;pstack->ptop = ptmp;pstack->clen++;return 1;
}

⑤删除

int pop_stack(Stack_t *pstack,Data_t *pdata)
{if(NULL == pstack){return -1;}STNode_t *ptmp = pstack->ptop;pstack->ptop = ptmp->pnext;if(pdata != NULL){*pdata = ptmp->data;}free(ptmp);pstack->clen--;return 0;}

⑥获取栈顶元素

int get_pop_stack(Stack_t *pstack, Data_t *pdata)
{if(NULL == pstack){return -1;}if(NULL == pdata){return -1;}*pdata = pstack->ptop->data;return 0;}

⑦销毁栈

void destroy_stack(Stack_t *pstack)
{if(is_empty_stack(pstack)){free(pstack);return ;}else{STNode_t *ptmp = pstack->ptop;STNode_t *p = NULL;while(ptmp->pnext != NULL){p =ptmp->pnext;free(ptmp);ptmp = p;}    free(ptmp);}free(pstack);
}
void stack_destory(Stack_t **pstack)
{while(!is_empty_stack(*pstack)){pop_stack(*pstack, NULL);}free(*pstack);*pstack = NULL;
}

4.队列

(1)基本概念

队列:允许从一端进行数据的插入,另一端进行数据删除的线性存储结构,称为队列结构
插入操作,叫入队操作,插入的这端称为队列的队尾;
删除操作,叫出队操作,删除的这端称为队列的队头。

特点:先进先出(FIFO)

应用:数据缓存

①链式队列

②顺序队列

循环队列

[head, tail)

循环队列为了区分队空和队满,将来少存储一个数据。
循环队列如何判空?--》队头和队尾处于同一位置,此时认为队列为空
循环队列如何判满?--》当队尾+1跟上队头时,任务认为队列为满

(2)基本操作

①链式队列

a.创建队列
LQueue_t *create_linkque()
{LQueue_t *plq = malloc(sizeof(LQueue_t));if(NULL == plq){return NULL;} plq->clen = 0;plq->phead = NULL;plq->ptail = NULL;return plq;
}
b.判空
int is_empty_linkque(LQueue_t *plq)
{return NULL == plq->phead;
}
c.遍历
void linkque_for_each(LQueue_t *plq)
{LQNode_t *ptmp = plq->phead;while(ptmp != NULL){printf("%d  ", ptmp->data);ptmp = ptmp->pnext;}puts("");
}
d.插入
int insert_linkque_tail(LQueue_t *plq, Data_type_t data)
{LQNode_t * ptmp = malloc(sizeof(LQNode_t));if(NULL == ptmp){return -1;}ptmp->data = data;ptmp->pnext = NULL;if(is_empty_linkque(plq)){plq->phead = ptmp;plq->ptail = ptmp;}else{plq->ptail->pnext = ptmp;plq->ptail = ptmp;} plq->clen++;return 1;
}
e.删除
int delete_linkque_head(LQueue_t *plq, Data_type_t *pdata)
{if(is_empty_linkque(plq)){return -1;}LQNode_t *ptmp = plq->phead;plq->phead = ptmp->pnext;if(pdata != NULL){*pdata = ptmp->data;}free(ptmp);if (NULL == plq->phead){plq->ptail = NULL;}plq->clen--;return 1;}
f.获取队头元素
int get_linkque_head(LQueue_t *plq)
{if(is_empty_linkque(plq)){return -1;}return plq->phead->data;
}
g.销毁队列
void destroy_linkque(LQueue_t **plq)
{while(!is_empty_linkque(*plq)){delete_linkque_head(*plq);}free(*plq);*plq = NULL;
}

②顺序队列---》循环队列

a.创建
Seqque_t *create_seqque()
{Seqque_t *psq = malloc(sizeof(Seqque_t));if (NULL == psq){printf("malloc error\n");return NULL;}psq->head = 0;psq->tail = 0;psq->pbase = malloc(sizeof(Data_type_t) * SEQQUE_MAX_LEN);if (NULL == psq->pbase){printf("malloc error\n");return NULL;}return psq;
}
b.判满
int is_full_seqque(Seqque_t *psq)
{if ((psq->tail+1)%SEQQUE_MAX_LEN == psq->head){return 1;}return 0;
c.判空
int is_empty_seqque(Seqque_t *psq)
{if (psq->head == psq->tail){return 1;}return 0;
}
d.入队
int push_seqque(Seqque_t *psq, Data_type_t data)
{if (is_full_seqque(psq)){printf("seqque is full\n");return -1;}psq->pbase[psq->tail] = data;psq->tail = (psq->tail+1) % SEQQUE_MAX_LEN;return 0;
}
e.遍历
void seqque_for_each(Seqque_t *psq)
{for (int i = psq->head; i < psq->tail; i = (i+1)%SEQQUE_MAX_LEN){printf("%d ", psq->pbase[i]);}printf("\n");
}

5.栈和队列的不同

1. 存取规则不同

  • 队列先进先出(FIFO, First In First Out)
    先进入队列的元素先被取出(类似排队)。

  • 后进先出(LIFO, Last In First Out)
    最后入栈的元素最先被取出(类似叠盘子)。

2. 操作接口不同

  • 队列

    • enqueue(入队):在队尾添加元素。

    • dequeue(出队):从队头移除元素。

    • push(入栈):在栈顶添加元素。

    • pop(出栈):从栈顶移除元素。

http://www.dtcms.com/a/563163.html

相关文章:

  • 做网站还要写文章吗微信微网站是什么
  • 怎么建立一个博客网站手机壁纸网站大全
  • 哈尔滨 网站建设公司阿里 网站建设方案书 模板
  • 达州市网站建设网站建设结构表
  • seo网站推广是什么意思免费的个人简历模板电子版下载
  • 通过条形码图片获取对应商品信息python程序
  • 个人网站做经营性仿牌网站怎么做301跳转
  • 深圳创同盟科技有限公司东营有能做网站优化
  • 做设计常逛的网站网站系统设计说明书
  • 免费的简历制作网站做网站app需多少钱
  • 重庆专业网站建设公司哪家好wordpress 微信同步
  • 龙岗建设高端网站房屋设计图怎么制作
  • 专业制作彩铃网站app和手机网站的区别
  • 创立公司网站福甭市建设局网站
  • 河南教育平台网站建设网络最火游戏排行榜
  • 做网站guangxiyanda营销策略分析论文
  • 江苏网站开发建设门户网站制作定制
  • 建设网站的服务费是指什么石景山网站建设公司哪个好
  • 网站系统设计网页作业怎么做一个网站
  • 人工智能之数学基础:离散型随机变量的期望怎么计算?
  • 泉州网站wordpress 能做什么
  • 做发包业务网站ftp转换wordpress
  • 建设网站的课题wordpress怎么重新配置文件
  • 在wordpress主题后台安装了多说插件但网站上显示不出评论模块安装百度一下
  • 惠济区城乡建设局网站谷歌平台推广外贸
  • 网站收录量下降微博优惠券网站怎么做的
  • 直播网站建设无锡建设工程服务中心
  • 重庆做网站建设公司排名深圳涂料网站建设
  • 做网站好听的域名wordpress登录注册小工具
  • 网站建设基础书籍提升学历的意义