数据结构链串的简单代码实现(C语言代码版)
注:本代码只限于简单,目前只考虑字符单个输入情况
#include <stdio.h>
#include <stdlib.h>
// 定义链串的节点
typedef struct Node {
char data; // 节点存储的字符
struct Node* next; // 指向下一个节点的指针
} Node;
// 定义链串的结构体
typedef struct {
Node* head; // 指向链串第一个节点的指针
int length; // 链串的长度
} LinkString;
// 创建一个新的链串节点
Node* createNode(char data) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (newNode == NULL) {
fprintf(stderr, "Memory allocation failed\n");
exit(EXIT_FAILURE);
}
newNode->data = data;
newNode->next = NULL;
return newNode;
}
// 初始化链串
void initLinkString(LinkString* ls) {
ls->head = NULL;
ls->length = 0;
}
// 在链串末尾添加字符
void appendChar(LinkString* ls, char c) {
Node* newNode = createNode(c);
if (ls->head == NULL) {
ls->head = newNode;
} else {
Node* temp = ls->head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
}
ls->length++;
}
// 打印链串
void printLinkString(LinkString* ls) {
Node* temp = ls->head;
while (temp != NULL) {
printf("%c", temp->data);
temp = temp->next;
}
printf("\n");
}
// 释放链串占用的内存
void freeLinkString(LinkString* ls) {
Node* temp;
while (ls->head != NULL) {
temp = ls->head;
ls->head = ls->head->next;
free(temp);
}
ls->length = 0;
}
int main() {
LinkString ls;
initLinkString(&ls);
// 向链串中添加字符
appendChar(&ls, 'H');
appendChar(&ls, 'e');
appendChar(&ls, 'l');
appendChar(&ls, 'l');
appendChar(&ls, 'o');
// 打印链串
printLinkString(&ls);
// 释放链串占用的内存
freeLinkString(&ls);
return 0;
}