日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

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

堆棧這種數據最鮮明的特點是:后進先出。

用動態數組實現堆棧:

#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();} }

?

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

?

樹:

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

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

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

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

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

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

?

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

總結

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

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