线性表链接存储结构是由若干个节点组成的链表,每个节点包括一个数据字段和一个指针字段。 数据字段存储数据,指针字段指向下一个节点。 以下是基本操作的实现: ### 1. 初始化 ```c# # LNode {int data; LNode *next;} LNode, *;// 初始化链表 () { L = () ((LNode));if (L == NULL) {("初始化失败!\n");exit(-1) ;}L->下一个= NULL; L;}````### 2.赋值````c//赋值操作 void (L, int i, int e) {//查找第i个节点 int j = 1;LNode *p = L ->下一步; while (p != NULL && j < i) {p = p->next;j++;}//如果第i个节点不存在 if (p == NULL || j > i) {("赋值失败: 第%d个节点不存在!\n", i);;}//赋值 p->data = e;}```### 3.值获取```c//值运算 int (L, int i) {// 查找第 i 个节点 int j = 1;LNode *p = L->next;while (p != NULL && j < i) {p = p->next;j++; }// 如果第 i 个节点不存在 if (p == NULL || j > i ) {("取值失败:%d 节点不存在!\n", i); -1;}//返回第i个节点的值 p->data;}````### 4.插入 ```c//插入操作 void (L, int i, int e) {/ / 查找第i-1个节点 int j = 0;LNode *p = L;while (p != NULL && j < i -1) {p = p->next;j++;}//如果是第i-1个节点不存在 if (p == NULL || j > i-1) {("插入失败:第%d个节点不存在节点!\n", i-1);;}//创建新节点并插入LNode * = (LNode*) ((LNode));if ( == NULL) {("插入失败:内存分配错误!\n");;}->data = e;->next = p->next ;p->next = ;}````### 5.删除````c//删除操作 void (L, int i) {//查找第i-1个节点 int j = 0;LNode *p = L;while (p != NULL && j < i-1) {p = p->next;j++;}//如果第i-1个节点不存在 if (p == NULL || j > i-1 ) {("删除失败:第%d个节点不存在!\n", i-1);;}//删除第i个节点 LNode *q = p->next;p->next = q- >下一个;自由(q);}```### 6 . Merge```c // 合并操作 (La, Lb) {LNode *pa = La->next;LNode *pb = Lb->next;LNode *pc = La;while (pa != NULL && pb != NULL ) {if (pa->data 数据) {pc->next = pa;pc = pa;pa = pa->next;} else {pc->next = pb;pc = pb;pb = pb->next ; }}pc->下一个=pa? pa : pb;自由(Lb); 啦;}```