程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C指針編程之道 ---第五次筆記

C指針編程之道 ---第五次筆記

編輯:關於C語言

C指針編程之道 ---第五次筆記


//數據結構中指針的應用
//內存中的堆棧和數據結構中的堆棧室友區別的
//在數據結構中,常常把堆棧放在一起表示的一種數據結構,
//但是在內存中堆是存儲動態的內存,棧是存放靜態的以及調用的函數。
//在數據結構中涉及了堆棧,隊列,鏈表等在這裡主要實現的是隊列。
//循環隊列的指針應用
#include
#include
#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- //{
// 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
#include
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);
}


}


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved