RAG演进路线与核心架构
2026/9/29 4:21:51
天地苍苍几个秋,事事轮转似相识。
单向红尘深陷中,回顾已无来时路。
此间多少付错意,寥寥几笔书平生。
泥泞路,蹒跚走,唯一处,苦寻之。——————单链表
typedef int SLTDataType; typedef struct S { SLTDataType data; struct S* next; }SLTNode;这一定义应在项目的头文件(.h)中编写
void SLTPrintf(SLTNode* phead) { SLTNode* pcur = phead; while (pcur)//当pcur为NULL时退出循环 { printf("%d->", pcur->data);//打印类型取决于数据data的类型 pcur = pcur->next;//pcur指针自动向后移动一个结点,直到最后一个结点 } }SLTNode* SLTbuyNode(SLTDataType x) { SLTNode* newnode = (SLTNode*)malloc(sizeof(SLTNode)); //C语言中运用malloc函数需要包含头文件#include<stdlib.h>,参数单位是字节 if (newnode == NULL)//检验是否创建失败 { perror("malloc fail:"); //perror函数是为了验证malloc为什么创建失败,打印出创建失败的原因 exit(1); //如果创建失败就退出程序 } newnode->data = x; newnode->next = NULL; return newnode; //返回的是新结点的地址 }void SLTPushBack(SLTNode** pphead, SLTDataType x) //由于要通过影响形参,来影响实参,故采用传址调用(二级指针) { assert(pphead); //判断pphead是否为空指针,防止对空指针解引用造成程序错误,C语言中引用assert断言需要包含头文件#include<assert.h> SLTNode* newnode = SLTbuyNode(x);//将新申请的x结点空间地址传给newnode if (*pphead == NULL)//判断初始时链表是否为空 { *p