数据结构定义结构体(1)
作者:
Item
,
2022-11-28 18:44:47
,
所有人可见
,
阅读 199
//二叉树结点的定义
typedef struct node{
char data[10];
struct node *left, *right;
}BTree;
BTree *root;//定义一颗树
root.data;root.left;root.right;
//定义一个整形链表
typedef struct node{
int data;
struct node *link;
}NODE;
typedef NODE *PNODE;//即PNODE 为 NODE *
//申请一个辅助空间(数组)
int *q;
q = (int *)malloc(sizeof(int)*(n + 1));//申请n + 1个位置的辅助空间
memset(q, 0, sizeof(int) * (n + 1));//赋初值为0
//创建头结点,并初始化
LinkList L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
s = (LNode *)malloc(sizeof(LNode));//创建新结点
//链表为函数参数时
LinkList List_A(LinkList &L);//需要更改链表的结点时
LinkList List_A(LinkList L);//不需要更改链表的结点时,如查找
//定义一个双链表
typedef struct DNode{
ElemType data;//数据域
struct DNode *prior, *next;//前后指针
}DNode, *DLinkList;
//顺序栈的定义
#define MaxSize 50 //定义栈中元素的最大个数
typedef struct{
ElemType data[MaxSize];//存放栈中元素
int top; //栈顶指针
}SqStack;
//栈的链式存储
typedef struct LinkNode{
ElemType data;//数据域
struct LinkNode *next;//指针域
} *LinkStack;//栈类型定义
//队列的顺序存储
#define MaxSize 50
typedef struct{
ElemType data[MaxSize];//存放队列元素
int front, rear;//对头,对尾指针
}SqQueue;
//循环队列
//队空
Q.rear == Q.front;
//队满
(Q.rear + 1) % MaxSize == Q.front;
//队长
(Q.rear - Q.front + MaxSize) % MaxSize
//队首指针进一
Q.front == (Q.front + 1) % MaxSize
//队尾指针进一
Q.rear == (Q.rear + 1) % MaxSize
//队列的链式存储
typedef struct LinkNode{//链式队列结点
ElemType data;
struct LinkNode *next;
}LinkNode;
typedef struct{//链式队列
LinkNode *front, *rear;
}LinkQueue;
//初始化
void InitQueue(LinkQueue &Q){
Q.front = Q.rear = (LinkNode *)malloc(sizeof(LinkNode));//建立头结点
Q.front->next = NULL; //初始为空
}