標籤:style io ar os sp strong on 資料 art
//資料結構中指標的應用
//記憶體中的堆棧和資料結構中的堆棧室友區別的
//在資料結構中,常常把堆棧放在一起表示的一種資料結構,
//但是在記憶體中堆是儲存動態記憶體,棧是存放靜態以及調用的函數。
//在資料結構中涉及了堆棧,隊列,鏈表等在這裡主要實現的是隊列。
//迴圈隊列的指標應用
#include <iostream>
#include <cstdio>
#define QueueSize_UarLen 8
using namespace std;
typedef struct
{
int front;
int rear;
int counter;
int uart_data[QueueSize_UartLen];
}CIRQUEUE_UART;
//隊列的初始化
void InitQueue(CIRQUEUE_UART *queue)
{
queue->front = 0;
queue->rear = 0;
queue->counter = 0;
}
//入隊
int InQueue(CIRQUEUE_UART *queue, int data)
{
if(QueueFull(queue))
{
//輸出隊列滿了
return 0;
}
else
{
queue->uart_data[queue->rear] = data;
queue->counter++;
queue->rear = (queue->rear + 1) % QueueSize_UartLen;
//這裡的上一句相當於
//if(queue-<rear + 1 == QueueSize_UartLen)
//{
// queue_rear = 0;
//}
//else
//{
// queue->rear ++;
//}
return 1;
}
}
//出隊
int OutQueue(CIRQUEUE_UART *queue, int *p_data)
{
if(QueueEmpty(queue))
{
//輸出隊空提示
//return 0;
}else
{
*p_data = queue->data(font);
queue->counter--;
queue->front = (queue->front + 1) % QueueSize_UartLen;
return 1;
}
}
//判斷隊列是否為空白
int QueueEmpty(QueueSize_UartLen *queue)
{
return queue->counter == 0;
}
//判斷是否是滿的
int QueueFull(QueueSize_UartLen *queue)
{
return queue->counter == QueueSize_UartLen;
}
int main()
{
/**
*
* /
}
//C世界的樹
//這裡寫的是二叉樹的三種遍曆方式
#include <stdio.h>
#include <malloc.h>
typedef struct tree_node
{
char data;
struct tree_node *lchild, *rchild;
}BT_Node;
#define Tree_NodeLen sizeof(BT_Node)
BT_Node *tree;
BT_Node *Creat_BTree(BT_Node *t);
void visit_Node(BT_Node *tree);
void Pre_Order(BT_Node *tree);
void Mid_Order(BT_Node *tree);
void After_Order(BT_Node *tree);
int main()
{
printf("\n請輸入輸的節點\n");
tree = Creat_BTree(Tree);
if(tree)
{
printf("\n前序走訪\n");
Pre_Order(tree);
printf("\n");
printf("\n中序遍曆\n");
Mid_Oder(tree);
printf("\n");
printf("\n中序遍曆\n");
After_Order(tree);
printf("\n");
}
printf("\n");
return 0;
}
BT_Node *Create_BTree(BT_Node *tree)
{
char ch;
ch = getchar();
if(ch == ‘*‘)
{
tree = null;
}
else
{
tree = (BT_Node *)malloc(Tree_NodeLen);
tree->data = ch;
tree->lchild = Create_BTree(tree->lchild);
tree->rchild = Create_BTree(tree->rchild);
}
return(tree);
}
void Visited_Node(BT_Node *tree)
{
printf(" ");
putchar(tree->data);
printf("\t");
}
void Pre_Order(BT_Node *tree)
{
if(! tree)
{
return;
}
else
{
Visit_Node(tree);
Pre_Order(tree->lchild);
Pre_Order(tree->rchild);
}
}
void Mid_Order(BT_Node *tree)
{
if(!tree)
{
return;
}
else
{
Mid_Order(tree->lchild);
Visit_Node(tree);
Mid_Order(tree->rchild);
}
}
void After_Order(BT_Node *tree)
{
if(! tree)
{
return;
}
else
{
After_Order(tree->lchild);
After_Order(tree->rchild);
Visited_Node(tree);
}
}
C指標編程之道 ---第五次筆記