日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C的指针疑惑:C和指针17(经典抽象数据类型)

發(fā)布時間:2024/1/8 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C的指针疑惑:C和指针17(经典抽象数据类型) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

堆棧這種數(shù)據(jù)最鮮明的特點是:后進先出。

用動態(tài)數(shù)組實現(xiàn)堆棧:

#include "C17.h" #include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <assert.h>static STACK_TYPE *stack; //static size_t stack_size static int stack_size; static int top_element = -1;void create_stack(int size) {assert(stack_size == 0);stack_size = size;stack = (STACK_TYPE *)malloc(stack_size * sizeof(STACK_TYPE));assert(stack != NULL); }void destroy_stack(void) {assert(stack_size > 0);stack_size = 0;free (stack);stack = NULL; }void push (STACK_TYPE value) {assert(! is_full());top_element += 1;stack[top_element] = value; }void pop(void) {assert(!is_empty());top_element -= 1; }STACK_TYPE top(void) {assert(!is_empty());return stack[top_element]; }int is_empty(void) {assert(stack_size > 0);return top_element == -1; }int is_full(void) {assert(stack_size > 0);return top_element == stack_size -1; }int main(void) {int ret,i;create_stack(5);for(i= 0;i<5;i++){push(i);}for(i= 0;i<5;i++){ret = top();printf("dynamic data: %d\n",ret);pop();} }

?

鏈式堆棧:

#include "C17.h" #include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <assert.h>#define FALSE 0typedef struct STACK_NODE {STACK_TYPE value;struct STACK_NODE *next; }StackNode;static StackNode *stack; //static int stack_size; //static int top_element = -1;void create_stack(int size) {}void destroy_stack(void) {while(!is_empty())pop(); }void push (STACK_TYPE value) {StackNode *new_node;new_node = (StackNode *)malloc(sizeof(StackNode));assert(new_node != NULL);new_node->value = value;new_node->next = stack;stack = new_node; }void pop(void) {StackNode *first_node;assert(!is_empty());first_node =stack;stack = first_node->next;free(first_node); }STACK_TYPE top(void) {assert(!is_empty());return stack->value; }int is_empty(void) {return stack == NULL; }int is_full(void) {return FALSE; }int main(void) {int ret,i;//create_stack(5);for(i= 0;i<5;i++){push(i);}for(i= 0;i<5;i++){ret = top();printf("dynamic data: %d\n",ret);pop();} }

?

隊列:是一種先進先出的結構。需要兩個指針:一個指向隊頭,一個指向隊尾。

?

樹:

屬性:每個節(jié)點的值比它的左子樹的所有節(jié)點的值都要大,但比它的右子樹的所有節(jié)點的值都要小。

樹的遍歷:前序、中序、后序、層次遍歷。

前序遍歷:檢查節(jié)點的值->遞歸遍歷左子樹和右子樹。

中序遍歷:遍歷左子樹->檢查當前節(jié)點的值->遍歷右子樹。。

后序遍歷:遍歷左右子樹->檢查當前節(jié)點的值。

層次遍歷:逐層檢查樹的節(jié)點。處理根節(jié)點->處理它的孩子->處理它的孫子。

?

轉載于:https://www.cnblogs.com/Caden-liu8888/p/6607647.html

總結

以上是生活随笔為你收集整理的C的指针疑惑:C和指针17(经典抽象数据类型)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。