## 单向不带头链表的使用

news/2024/2/25 18:59:38/文章来源:https://blog.csdn.net/2301_77479435/article/details/135630414

## 单向不带头链表的使用

### 链表的创建：

``````typedef struct LNode {SLDataType data;struct LNode* next;

### 按位查找

``````LNode* GetElem(LinkList L, int i) {int j = 1;LNode* p = L->next;if (i < 0)return NULL;if (i == 0)return L;while (p && j < i) {p = p->next;j++;}return p;
}``````

``````p=GetElen(L,i-1);
s->next=p->next;
p->next=s;``````

前插操作

``````s->next=p->next;
p->next=s;
tmp=p->data;
p->data=s->data;
s->data=tmp;``````

### 按值查找

``````LNode* LocateElem(LinkList l, SLDataType e) {LNode* p = l->next;while (p && p->data != e) {p = p->next;}return p;
}``````

### 链表的头插

``````//尾插
``````void SListPushBack(SLTNode** pphead, SLDataType x) {SLTNode* newnode = BuySListNode(x);if (*pphead == NULL) {*pphead = newnode;}else {//找尾结点的指针SLTNode* tail = *pphead;while (tail->next) {tail = tail->next;}//将尾结点链接到新的结点tail->next = newnode;}
}``````

### 链表的尾插

``````void SListPushFront(SLTNode** pphead, SLDataType x) {SLTNode* newnode = BuySListNode(x);newnode->next = *pphead;*pphead = newnode;
}``````

### 链表的头删

``````//头删
``````void SListPopFront(SLTNode** pphead)
}``````

### 链表的尾删

``````//尾删
``````void SListPopBack(SLTNode** pphead)

链表的结点查找

``SLTNode* SListFind(SLTNode* phead, SLDataType x);``
``````SLTNode* SListFind(SLTNode* phead, SLDataType x)
{SLTNode* cur=phead;while (cur) {if (cur->data == x) {return cur;}cur = cur->next;}return NULL;
}``````

``````SLTNode* BuySListNode(SLDataType x) {SLTNode* newnode = (SLTNode*)malloc(sizeof(SLTNode));newnode->data = x;newnode->next = NULL;return newnode;
}``````

### 在pos的前面插入x

``````//在pos的前面插入x
void SListInsert(SLTNode** pphead,SLTNode* pos, SLDataType x);``````
``````void SListInsert(SLTNode** pphead, SLTNode* pos, SLDataType x) {if (pos == *pphead) {SListPushFront(pphead, x);}else {SLTNode* newnode = BuySListNode(x);SLTNode* prev = *pphead;while (prev->next != pos) {prev = prev->next;}prev->next = newnode;newnode->next = pos;}
}``````

### 删除pos位置的值

``void SListErase(SLTNode** pphead, SLTNode* pos) {if (pos = *pphead) {SListPopFront(pphead);}else {SLTNode* prev = *pphead;while (prev->next != pos) {prev = prev->next;}prev->next = pos->next;free(pos);}}``

### PDF.js实现按需分片加载pdf文件

pdf.js实现按需、分片加载pdf文件 1.服务端配置 分片加载的实现是基于 HTTP-RANGE&#xff0c;即服务端的文件接口必须实现了HTTP-RANGE。 服务端文件接口实现HTTP-RANGE&#xff0c;需要服务端添加如下响应头 [{key: "Accept-Ranges",value: "bytes"}…

### Redis：原理速成+项目实战——Redis实战9（秒杀优化）

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;Redis&#xff1a;原理速成项目实战——Redis实战8&#xff08;基于Redis的分布式锁及优化&#xff09; &#x1f4da;订阅专栏&…

### 20240116使用Firefly的AIO-3399J的预编译的Android10固件确认RT5640声卡信息

20240116使用Firefly的AIO-3399J的预编译的Android10固件确认RT5640声卡信息 2024/1/16 17:55 百度&#xff1a;RK3399 ALC5640 RK3399 RT5640 BING&#xff1a;RK3399 ALC5640 LINE-IN接麦克风不会有声音的。 耳机只有右边有声音&#xff0c;但是偏小&#xff0c;可以通过音量…

### Elasticsearch Windows部署-ELK技术栈

1、下载Elasticsearch、kibana、logstash 本文不介绍ELK相关原理知识&#xff0c;只记录部署操作过程 下载地址Past Releases of Elastic Stack Software | Elastic 选择同一版本&#xff0c;这里选择是当前最新版本8.11.3 解压放在同目录下&#xff0c;方便后续操作与使用 …

### 【OpenAI】自定义GPTs应用(GPT助手应用)及外部API接口请求

11月10日&#xff0c;OpenAI正式宣布向所有ChatGPT Plus用户开放GPTs功能 简而言之&#xff1a;GPT应用市场(简称GPTs, 全称GPT Store) Ps&#xff1a; 上图为首次进入时的页面&#xff0c;第一部分是自己创建的GPTs应用&#xff0c;下面是公开可以使用的GPTs应用 一、创建GPTs…