/*
双链表
*/
#include<stdio.h>
#include<stdlib.h>
struct student {
struct student* after;
int data;
struct student* next;
};
//创建表头
struct student* createHeader() {
struct student* newHeader = malloc(sizeof(struct student));
newHeader->after = NULL;
newHeader->data = 0;
newHeader->next = NULL;
return newHeader;
}
//创建新的节点
struct student* createList(struct student* list,int newData) {
struct student* newList = malloc(sizeof(struct student));
newList->data = newData;
newList->after = list;
newList->next = NULL;
return newList;
}
//插入节点(头插法)
void insertByHeader(struct student* header,int newData, int state) {
if (state == 0) {
struct student* newInsertByHeader = createList(header, newData);
newInsertByHeader->next = header->next;
newInsertByHeader->after = header;
header->next = newInsertByHeader;
}
if (state == 1) {
struct student* newInsertByHeader = createList(header, newData);
newInsertByHeader->next = header->next;
newInsertByHeader->after = header;
newInsertByHeader->next->after = newInsertByHeader;
header->next = newInsertByHeader;
}
}
//遍历打印
void printfByHeader(struct student* header) {
struct student* pMove = header->next;
while (pMove) {
printf("节点编号:%d\n", pMove->data);
printf("该节点之前节点地址:%d\t", pMove->after);
printf("该节点之后节点地址:%d\n", pMove->next);
pMove = pMove->next;
}
}
int main() {
struct student* header = createHeader();
insertByHeader(header, 1,0);
insertByHeader(header, 2,1);
insertByHeader(header, 3,1);
insertByHeader(header, 4,1);
insertByHeader(header, 5,1);
insertByHeader(header, 6,1);
printfByHeader(header);
system("pause");
return 0;
}
C语言实现双链表(无讲解)
最新推荐文章于 2025-12-07 21:20:15 发布
本文详细介绍了使用C语言实现双链表的基本操作,包括创建表头、创建节点、头插法插入节点及遍历打印等功能。通过具体代码示例,读者可以深入理解双链表的构造和操作流程。
902

被折叠的 条评论
为什么被折叠?



