IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 2_单链表-查找删除 -> 正文阅读

[数据结构与算法]2_单链表-查找删除

#include "stdio.h"
#include "stdlib.h"


#define OK 1
#define ERROR 0

typedef int ElemType;
typedef struct Lnode
{
    ElemType data;    // 数据域
    struct Lnode *next; // 指针域:指向自身的后继
}LNode, *LinkList;  // LNode等价于struct Lnode,LinkList等价于struct Lnode*

LinkList INIT_link(LinkList H); // 头指针
int Create_link(LinkList H);
int OUT_link(LinkList H);

int Search_link(LinkList H, int pos);
int Delete_link(LinkList H, int pos, ElemType *e); // 第三个参数是可选参数,用于返回主函数要删除的数
int Insert_link(LinkList H, int pos, ElemType e);


int main()
{
    LinkList head=NULL;  // 头指针为空
    int pos;
    ElemType e;
    int n;
    head = INIT_link(head);
    printf("输入数字,以-1结束:\n");
    Create_link(head);
    printf("\n输出为:\n");
    printf("\n");
    OUT_link(head);
    printf("\n输入要查找的位置:\n");
    scanf("%d", &pos);
    printf("这个位置的数是:\n");
    Search_link(head, pos);
    printf("\n输入要删除的位置:\n");
    scanf("%d", &pos);
    Delete_link(head, pos, &e);
    printf("\n输出为:\n");
    OUT_link(head);
    return OK;    // 运行成功,下同
}

LinkList INIT_link(LinkList H)    // 初始化链表,返回指针类型
{
    H = (LNode*)malloc(sizeof(LNode));  // 动态分配空间
    if(!H) return NULL;   // 空间分配失败就返回空
    H->next = NULL;   // 头指针设为空
    return H;
}

int Create_link(LinkList H)  // 创建指针
{
    LinkList p, tail=H;  // tail用于连接节点的指针
    ElemType m;
    int pos;
    int i;

    while(scanf("%d", &m)&&m!=-1)  // 以-1结束
    {
        p = (LNode*)malloc(sizeof(LNode));   // 分配空间,创建新的节点
        if(!p) return ERROR;
        p->data = m;       // 数据域
        p->next = NULL;    // 指针域

        tail->next = p;    // 连接下一个新节点
        tail = p;
    }
    return OK;

}

int OUT_link(LinkList H)
{
    LinkList p=H->next;
    if(H==NULL) return ERROR;   // 如果H为空就跳出
    while(p)
    {
        printf("%d ", p->data);
        p = p->next;
    }
    return OK;
}


int Search_link(LinkList H, int pos)
{
    LinkList p=H->next;
    int i=1;
    if(H==NULL||pos<1) return ERROR;  // pos或H为空就返回0
    while(p&&i<pos)    // 一直寻找到pos的位置才跳出
    {
        i++;
        p = p->next;
    }
    if(p==NULL)     // 若p为空,证明不存在
        return ERROR;
    else
        printf("%d", p->data);
    return OK;
}

int Delete_link(LinkList H, int pos, ElemType *e)
{
    LinkList p=H->next,s;
    int i=1;
    if(H==NULL||pos<1) return ERROR;
    while(p&&i<pos-1)
    {
        i++;
        p = p->next;
    }
    if(p==NULL)
        return ERROR;
    s = p->next;     // 设置中间指定
    p->next = s->next;  // 把要连接删除的那个节点值指针指向删除节点指针的下一个

    *e = s->data;
    free(s);    // 释放
    return OK;
}

在这里插入图片描述

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-09-22 14:55:44  更:2021-09-22 14:55:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 10:04:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码