用c语言写一个单链表的初始化
时间: 2023-05-12 15:02:57 浏览: 125
单链表的初始化可以通过以下代码实现:
```
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node *next;
} Node;
typedef struct List {
Node *head;
int length;
} List;
void initList(List *list) {
list->head = (Node *)malloc(sizeof(Node));
list->head->next = NULL;
list->length = 0;
}
int main() {
List list;
initList(&list);
return 0;
}
```
在这个代码中,我们定义了一个 `Node` 结构体,表示链表中的一个节点,包含一个整型数据和一个指向下一个节点的指针。我们还定义了一个 `List` 结构体,表示整个链表,包含一个指向头节点的指针和链表的长度。在 `initList` 函数中,我们为链表分配一个头节点,并将链表的长度初始化为 0。最后,在 `main` 函数中,我们创建了一个 `List` 类型的变量 `list`,并调用 `initList` 函数对其进行初始化。
相关问题
使用C语言写一个单链表队列
好的,以下是使用 C 语言编写单链表队列的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 队列元素结构体
typedef struct node {
int data;
struct node *next;
} Node;
// 队列结构体
typedef struct {
Node *front; // 队头指针
Node *rear; // 队尾指针
} Queue;
// 初始化队列
void initQueue(Queue *q) {
q->front = q->rear = NULL;
}
// 判断队列是否为空
int isEmpty(Queue *q) {
return q->front == NULL;
}
// 入队
void enqueue(Queue *q, int data) {
Node *node = (Node*)malloc(sizeof(Node));
if (node == NULL) {
printf("Failed to allocate memory.\n");
exit(EXIT_FAILURE);
}
node->data = data;
node->next = NULL;
if (q->rear == NULL) {
q->front = q->rear = node;
}
else {
q->rear->next = node;
q->rear = node;
}
}
// 出队
int dequeue(Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty.\n");
exit(EXIT_FAILURE);
}
Node *node = q->front;
int data = node->data;
q->front = node->next;
if (q->front == NULL) {
q->rear = NULL;
}
free(node);
return data;
}
// 遍历队列
void traverseQueue(Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty.\n");
return;
}
Node *node = q->front;
while (node != NULL) {
printf("%d ", node->data);
node = node->next;
}
printf("\n");
}
int main() {
Queue q;
initQueue(&q);
enqueue(&q, 10);
enqueue(&q, 20);
enqueue(&q, 30);
printf("Queue: ");
traverseQueue(&q);
printf("Dequeue: %d\n", dequeue(&q));
printf("Dequeue: %d\n", dequeue(&q));
printf("Queue: ");
traverseQueue(&q);
return 0;
}
```
以上代码实现了一个简单的单链表队列,可以使用 `initQueue` 初始化队列,使用 `isEmpty` 判断队列是否为空,使用 `enqueue` 入队,使用 `dequeue` 出队,使用 `traverseQueue` 遍历队列。
用c语言写一个单链表城市表
在C语言中,我们可以创建一个简单的单链表结构来表示城市数据。首先,我们需要定义一个节点结构体,包含城市名和指向下一个节点的指针。然后,我们会创建一个函数来添加城市、遍历列表以及打印所有城市。
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构
typedef struct City {
char name[50];
struct City* next;
} City;
// 添加新城市到链表
void addCity(City** head, const char* cityName) {
City* newNode = (City*)malloc(sizeof(City));
if (newNode == NULL) {
printf("Memory allocation failed.\n");
return;
}
strncpy(newNode->name, cityName, sizeof(newNode->name) - 1); // 转换null终止符
newNode->next = *head;
*head = newNode;
}
// 遍历并打印链表中的城市
void printCities(City* head) {
while (head != NULL) {
printf("%s -> ", head->name);
head = head->next;
}
printf("NULL\n");
}
int main() {
// 初始化空链表
City* head = NULL;
// 添加一些城市
addCity(&head, "北京");
addCity(&head, "上海");
addCity(&head, "广州");
// 打印链表中的城市
printCities(head);
return 0;
}
```
在这个示例中,我们先初始化了一个空链表`head`,然后通过`addCity`函数将城市名字添加到链表的头部,并使用`printCities`函数展示链表的内容。
阅读全文