单链表的查找、插入与删除结点

1.单链表查找结点: ①.按序号查找结点值: 【单链表的查找、插入与删除结点】什么都不说了,课本上的代码yyds,本来觉得课本上的代码不够完整,自己写着写着就越发觉得课本上的代码极其精妙。

LNode* Get(LinkList L, int i) {//按序号查找结点值 int j = 1; //初始为1 LNode* p = L->next; if (i < 0) {//无效返回空 return NULL; } else if (i == 0) { return L; } while (p && j < i) {//查找,若i大于表长,返回null p = p->next; j++; } return p; }

②.按值查找表结点:
LNode* LocateElem(LinkList L,int e) {//按值查找表结点int j = 1; LNode* p = L->next; while (p != NULL && p->data != e) { p = p->next; j++; } return p; }

2.插入结点操作:
void insert(LNode *s,int i) {//在序号i处插入结点sLNode* p = new LNode; p = Get(L, i-1); s->next = p->next; p->next = s; }

3.删除结点操作:
void Delete(int i) {//删除第i个结点LNode* p = new LNode; p = Get(L, i - 1); LNode* q = new LNode; q = p->next; p->next = q->next; free(q); }

4.运行截图: 单链表的查找、插入与删除结点
文章图片

5.完整代码:
#include using namespace std; typedef struct LNode { int data; struct LNode* next; }LNode, * LinkList; LinkList L = new LNode; LinkList List_TailInsert(LinkList& L) {//尾插法L = new LNode; LNode* s, * r = L; int x = 1; while (x != 10) {//插入数字1~9 s = new LNode; s->data = https://www.it610.com/article/x; r->next = s; r = s; x++; } r->next = NULL; return L; }void printk(LinkList& L) {//输出单链表LinkList q; q = L->next; while (q) { cout << q->data << " "; q = q->next; } cout << endl; }LNode* Get(LinkList L, int i) {//按序号查找结点值 int j = 1; //初始为1 LNode* p = L->next; if (i < 0) {//无效返回空 return NULL; } else if (i == 0) { return L; } while (p && j < i) {//查找,若i大于表长,返回null p = p->next; j++; } return p; }LNode* LocateElem(LinkList L,int e) {//按值查找表结点int j = 1; LNode* p = L->next; while (p != NULL && p->data != e) { p = p->next; j++; } if (!p) { cout << "没有找到值为e的结点!" << endl; } else cout << "数值为"<next = p->next; p->next = s; cout << "在第"<next; p->next = q->next; free(q); cout << "删除第" << i << "个结点后的输出如下:" << endl; printk(L); }int main() {L = List_TailInsert(L); cout << "新建单链表输出如下:" << endl; printk(L); cout << "第三个结点数据元素为:" << Get(L,3)->data << endl; //查找序号为3结点的元素值LNode* p = new LNode; p = LocateElem(L, 3); //按元素值查找结点序号LNode* s = new LNode; s->data = https://www.it610.com/article/10; insert(s, 3); //在序号i处插入结点sDelete(3); //删除第i个结点return 0; }

    推荐阅读