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

网站的大图标怎么做的网站建设制作教程

网站的大图标怎么做的,网站建设制作教程,给我一个用c 做的网站,网站开发需要准备什么材料目录 1、栈 2、队列 1、栈 先进后出&#xff08;都在栈顶进行操作&#xff09; 使用数组结构比使用链式结构更优&#xff0c;因为数组在尾上插入数据的代价更小。并且采用动态长度的数组来表示。 定义结构体 #include <stdio.h> #include <stdlib.h> #include &l…

目录

1、栈

2、队列


1、栈

先进后出(都在栈顶进行操作)

使用数组结构比使用链式结构更优,因为数组在尾上插入数据的代价更小。并且采用动态长度的数组来表示。

定义结构体

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <stdbool.h>typedef int STDataType;
typedef struct Stack
{STDataType* a;//动态分配的指针数组,指向一个数组空间int top;//相当于数组下标int capacity;//动态数组容量,即可以容纳的STDataType元素的个数
}ST;

初始化:

void StackInit(ST* ps)
{assert(ps);ps->a = NULL;ps->top = 0;ps->capacity = 0;
}

插入数据:

void StackPush(ST* ps, STDataType x)
{assert(ps);//先看有没有空间 再插入if (ps->top == ps->capacity){int newcapacity = ps->capacity == 0 ? 4 : 2 * (ps->capacity);//元素个数//tmp指向新开辟的空间 ps->a 是原来的空间位置 一个元素大小*元素个数 = 空间大小STDataType* tmp = (STDataType*)realloc(ps->a, sizeof(STDataType) * newcapacity);//更新ps->capacity = newcapacity;ps->a = tmp;//新空间给a}ps->a[ps->top] = x; //top指向的是栈顶元素的下一个位置 所以先给值ps->top++;//再移动
}

删除数据:直接对top--操作即可

void StackPop(ST* ps)
{assert(ps);assert(ps->top > 0);//保证有数据可删除ps->top--;
}

取栈顶元素:数组下标取

STDataType StackTop(ST* ps)
{assert(ps);assert(ps->top > 0);return ps->a[ps->top-1]; //-1指向栈顶元素位置
}

判断是否为空:

bool StackEmpty(ST* ps)
{if (ps->top == 0){return true;}else{return false;}
}

打印函数:

void StackPrint(ST* ps)
{assert(ps);while (ps->top > 0){printf("%d", ps->a[ps->top - 1]);ps->top--;}printf("\n");
}

使用while循环 top--

栈元素的个数: 

因为top初始化的时候是0,所以直接返回top即可

eg:top=2,ps[0] ps[1] 刚好等于top的值

int Stack(ST* ps)
{assert(ps);return ps->top;
}

 销毁栈:

void StackDestory(ST* ps)
{assert(ps);free(ps->a);ps->a = NULL;ps->top = 0;ps->capacity = 0;
}

测试:

ST st;
StackInit(&st);
StackPush(&st, 1);
StackPush(&st, 2);
StackPush(&st, 3);
while (!StackEmpty(&st))
{printf("%d", StackTop(&st));StackPop(&st);
}

2、队列

只允许在一端进行插入,另一端进行删除。

队尾插入,对头删除。(先进先出)

采用链式结构优于数组结构,因为队列是头删,如果采用数组结构,删除了队头元素之后要对后面的元素全都向前挪动,这样效率太低了

如图:

定义结构体:

typedef int QDataType;
//定义链式结构
typedef struct QueueNode
{//1、next //2、数据QueueNode* next;QDataType data;
}QN;
typedef struct Queue//定义一个结构体里面有两个指针
{QN* head; //链式结构类型的指针,指向对头QN* tail;//指向队尾
}Queue;

结构示意图: 

 插入数据:链式结构只要插入数据,就要重新向内存申请空间

特殊情况:判断队列是否为空 为空时要将头尾指针都指向newnode

void QueuePush(Queue* pq, QDataType x)
{assert(pq);//1、链式结构只要插入数据,就要重新向内存申请空间QN* newnode = (QN*)malloc(sizeof(QN));newnode->data = x;newnode->next = NULL;//2、判断队列是不是为空 为空头尾都指向newnode 不为空将newnode链入队尾if (pq->head == NULL){pq->head = pq->tail = newnode;}else {pq->tail->next = newnode;pq->tail = newnode;}
}

删除数据:头删

void QueuePop(Queue* pq)
{assert(pq);assert(pq->head);//1、指针指向头//2、通过头 找到头的下一个节点(新头)//3、free + 指针置空//4、换新头//5、边界情况:如果已经删除了最后一个元素QN* cur = pq->head;QN* next = cur->next;free(cur);cur = NULL;pq->head = next;if (pq->head == NULL){pq->tail = NULL;}
}

取队头和队尾数据

队头:

QDataType QueueFront(Queue* pq)
{assert(pq);assert(pq->head);QN* cur = pq->head;return cur->data;
}

队尾:

QDataType QueueBack(Queue* pq)
{assert(pq);assert(pq->head);QN* cur = pq->tail;return cur->data;
}

队列中元素的个数:使用指针指向队头,从头往后走,计数器++

size_t QueueSize(Queue* pq)
{assert(pq);int count = 0;QN* cur = pq->head;//先++操作 再向后移 因为开始cur就已经指向头节点了while (cur){count++;cur = cur->next;}return count;
}

打印函数:

void QueuePrint(Queue* pq)
{assert(pq);QN* cur = pq->head;while (cur){printf("%d", cur->data);cur = cur->next;}printf("\n");
}

测试:

Queue q;
QueueInit(&q);
QueuePush(&q, 1);
QueuePush(&q, 2);
while (!QueueEmpty(&q)
{QDataType front = QueueFront(&q);printf("%d", front);QueuePop(&q);
}

http://www.dtcms.com/wzjs/231714.html

相关文章:

  • 素材网站哪个最好百度sem推广具体做什么
  • 句容建设局网站招标搜索网站的浏览器
  • 网站底部导航设置在线网页编辑平台
  • 宁志网站两学一做新网站百度多久收录
  • 济南做网站哪家公司好恶意点击竞价是用的什么软件
  • 教育类手机网站模板2345网止导航
  • 青浦专业做网站公司泉州网站关键词排名
  • 怎么做网站排名郑州网站建设推广
  • 做食物网站应该考虑些什么电商运营自学全套教程
  • 装修公司谁做网站场景营销
  • ui设计方向网站建设目标查网站是否正规
  • wordpress 批量漏洞青岛seo整站优化
  • 物流公司网站建设方案品牌网络营销策划方案
  • 有哪些网站做的比较好看的图片seo关键词快速排名软件
  • 高清的建设工程人员查询吉林seo基础知识
  • wordpress设置关键词西安百度推广优化
  • 织梦网站图片怎么做滚动图片厦门百度推广排名优化
  • 专业网站开发培训优化师培训机构
  • 龙湖建设工程有限公司网站肇庆seo排名外包
  • 呼和浩特可以做网站的公司惠州百度seo排名
  • 什么企业做网站比较好杭州网站推广优化公司
  • 怎么免费建立网站seo快速排名案例
  • 快速做网站用什么软件seo排名赚app最新版本
  • 手机网站的模板下载软件成都网站关键词推广优化
  • 经典的网站设计网络营销策划的具体流程是
  • 网站开发有哪几种语言付费推广外包
  • 沧州wap网站制作安卓系统最好优化软件
  • 上海的建设项目招投标在哪个网站培训机构不退钱最怕什么举报
  • 广告设计方案长沙百家号seo
  • 网页顶部导航栏windows优化大师最新版本