赞
踩
栈是一种后进先出(LIFO)的数据结构,可以使用数组或链表来实现。以下是一个使用数组实现的简单栈的示例:
#define MAX_SIZE 100 typedef struct { int data[MAX_SIZE]; int top; } Stack; void initStack(Stack *s) { s->top = -1; } int isEmpty(Stack *s) { return (s->top == -1); } int isFull(Stack *s) { return (s->top == MAX_SIZE - 1); } void push(Stack *s, int value) { if (isFull(s)) { printf("Stack is full\n"); return; } s->data[++(s->top)] = value; } int pop(Stack *s) { if (isEmpty(s)) { printf("Stack is empty\n"); return -1; } return s->data[(s->top)--]; }
队列是一种先进先出(FIFO)的数据结构,同样可以使用数组或链表来实现。以下是一个使用数组实现的简单队列的示例:
#define MAX_SIZE 100 typedef struct { int data[MAX_SIZE]; int front, rear; } Queue; void initQueue(Queue *q) { q->front = q->rear = -1; } int isEmpty(Queue *q) { return (q->front == -1); } int isFull(Queue *q) { return ((q->rear + 1) % MAX_SIZE == q->front); } void enqueue(Queue *q, int value) { if (isFull(q)) { printf("Queue is full\n"); return; } if (isEmpty(q)) { q->front = q->rear = 0; } else { q->rear = (q->rear + 1) % MAX_SIZE; } q->data[q->rear] = value; } int dequeue(Queue *q) { if (isEmpty(q)) { printf("Queue is empty\n"); return -1; } int value = q->data[q->front]; if (q->front == q->rear) { q->front = q->rear = -1; } else { q->front = (q->front + 1) % MAX_SIZE; } return value; }
fopen
函数返回的文件指针进行错误检查,确保文件打开成功。feof
函数来判断文件是否读取或写入完整。fseek
函数),并且使用正确的读取或写入函数(如 fread
和 fwrite
)。二维数组是由若干行和若干列元素组成的数组,可以看作是一维数组的扩展。在C语言中,二维数组是一个连续的存储区域,可以通过两个索引来访问数组中的元素。
多维数组是二维数组的扩展,它可以有更多维度。例如,三维数组由若干个二维数组组成,四维数组由若干个三维数组组成,以此类推。多维数组在内存中仍然是连续存储的,但访问元素时需要使用多个索引。
二叉树是一种常见的树形数据结构,每个节点最多有两个子节点。以下是一个简单的二叉树结构的定义:
typedef struct Node {
int data;
struct Node *left;
struct Node *right;
} Node;
Node *createNode(int value) {
Node *newNode = (Node *)malloc(sizeof(Node));
if (newNode != NULL) {
newNode->data = value;
newNode->left = NULL;
newNode->right = NULL;
}
return newNode;
}
malloc
函数用于分配指定大小的内存块,但不会初始化内存块的内容,内存中的值是随机的。calloc
函数用于分配指定数量和大小的连续内存块,并将内存块的内容初始化为0。在使用 malloc
或 calloc
分配内存后,需要使用 free
函数来释放动态内存,以避免内存泄漏。
int *ptr = (int *)malloc(sizeof(int) * 10);
if (ptr != NULL) {
// 使用ptr指向的内存块
free(ptr); // 释放动态内存
}
使用 free
函数释放内存后,建议将指针设置为NULL,以避免野指针的出现。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。