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 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 单链表的基本操作(C语言实现) -> 正文阅读

[C++知识库]单链表的基本操作(C语言实现)

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#include<malloc.h>
#define ElemType int
typedef struct LNode		//单链表结点类型
{
    ElemType data;
    struct LNode *next;
}LNode, *LinkList;

int Length(LinkList L)		//测表长
{
	int j=0;
    LNode *p=L->next;
    while(p!=NULL)
    {
    	p=p->next;
        j++;
    }
    return j;
}

LinkList HeadInsert(LinkList L)		//头插法创建单链表(带头结点)
{
    LNode *s;
    int e;
    L=(LinkList)malloc(sizeof(LNode));
    L->next=NULL;
    scanf("%d",&e);
    while(e!=-1)
    {
        s=(LNode*)malloc(sizeof(LNode));
        s->data=e;
        s->next=L->next;
        L->next=s;
        scanf("%d",&e);
    }
    return L;
}

LinkList TailInsert(LinkList L)		//尾插法创建单链表(带头结点)
{
    int e;
    L=(LinkList)malloc(sizeof(LNode));
    LNode *s=NULL;
    LNode *r=L;			//定义尾指针,注意在L初始化之后
    scanf("%d",&e);
    while(e!=-1)
    {
        s=(LNode*)malloc(sizeof(LNode));
        s->data=e;
        r->next=s;
        r=s;
        scanf("%d",&e);
    }
    r->next=NULL;
    return L;
}

LNode *GetElem(LinkList L,int i)		//按序号查找结点,并返回其地址
{
    int j=1;
    LNode *p=L->next;
    if(i==0)
    	return L;
    if(i<1||i>Length(L))
    	return NULL;
    for(j=1;j<i;j++)
    	p=p->next;
    return p;
}

LNode *LocateElem(LinkList L,ElemType e)	//按值查找结点,并返回其地址
{
    LNode *p=L->next;
    while(p!=NULL&&p->data!=e)
        p=p->next;
    return p;
}

bool ListInsert(LinkList L,ElemType e,int i)		//向单链表插入结点
{
    LNode *s=(LNode*)malloc(sizeof(LNode));
    LNode *r=GetElem(L,i-1);
    if(i<1||i>Length(L))
    	return false;
    s->data=e;
   	s->next=r->next;
    r->next=s;
    return true;
}

bool ListDelete(LinkList L,int i)
{
    LNode *s=GetElem(L,i);
    LNode *r=GetElem(L,i-1);
    if(i<1||i>Length(L))
    	return false;
    r->next=s->next;
    free(s);
    return true;
}
void display(LinkList L)		//输出当前单链表
{
    printf("当前单链表内元素是:");
    LNode *p=L->next;
    for(p=L->next;p!=NULL;)
    {
        printf("%d ",p->data);
        p=p->next;
    }
    printf("\n");
}

int main()
{
    LinkList L=NULL;
    int e,i,t;
    LNode *p=NULL;
    
    //测试HeadInsert
    printf("请输入任意个数字来组成单链表(头插法):");
    L=HeadInsert(L);
    display(L);
    
    //测试TailInsert
    printf("请输入任意个数字来组成单链表(尾插法):");
    L=TailInsert(L);
    display(L);
    

    //测试GetElem
    printf("请输入你要查找的元素的位序:");
    scanf("%d",&i);
    p=GetElem(L,i);
    printf("该元素的值为:%d\n",*p);
    
    //测试LocateElem
    printf("请输入你要查找的元素的值:");
    scanf("%d",&e);
    p=LocateElem(L,e);
    printf("该元素的地址为:%p\n",p);
    
    //测试ListInsert
    printf("请输入你要插入的元素的值:");
    scanf("%d",&e);
    printf("请输入你要将该元素插入表的位序:");
    scanf("%d",&i);
    t=ListInsert(L,e,i);
    if(t)
    	printf("插入成功!\n");
    else
    	printf("插入失败!\n");
    display(L);
    
    //测试ListDelete
    printf("请输入你想删除的元素的位序:");
    scanf("%d",&i);
    t=ListDelete(L,i);
    if(t)
    	printf("删除成功!\n");
    else
    	printf("删除失败!\n");
    display(L);
    
    return 0;
}

在这里插入图片描述

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-23 11:16:21  更:2021-09-23 11:17:31 
 
开发: 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年11日历 -2024/11/23 22:41:23-

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