LinkList的基本创建

LinkList的基本创建include iostream usingnamespa include malloc h include stdio h defineTURE1 defineFALSE0 defineOK1 defineERROR0 defineIINFEA 1 defineOV stdio h malloc h iostream

LinkList的基本创建

LinkList的基本创建

LinkList的基本创建

LinkList的基本创建

#include <iostream> using namespace std; #include <malloc.h> #include <stdio.h> #define TURE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define IINFEASIBLE -1 #define OVERFLOW -2 #define LIST_INIT_SIZE 10 #define LISTINCREAMENT 2 typedef int ElemType; typedef int Status; typedef struct LNode{ ElemType data; struct LNode *next; }LNode,*LinkList;

//逆序建立单链表

void CreateList_L(LinkList &L,int n){ //逆位序输入n个元素的值,建立带头结点的单链表L int i; LinkList p; L=(LinkList)malloc(sizeof(LNode)); L->next = NULL;//先建立一个带头结点的单链表 for(i = n;i>0;--i){ p = (LinkList)malloc(sizeof(LNode)); //生成新结点 scanf("%d",&p->data); //插入元素值 p->next = L->next; L->next = p;//插入到表头 }//CreateList_L }

//打印单链表

void PrintList_L(LinkList L){ //打印输出链表元素的值 LinkList p=L->next; while(p) { printf("%d ",p->data); p = p->next; } printf("\n"); }//PrintList_L

//取第I个元素

Status GetElem_L(LinkList L,int i,ElemType &e){ //L为带头结点的单链表的头指针 //当第i个元素存在时,其赋值给e并返回OK,否则返回ERROR LinkList p; p=L->next; int j=1; //初始化,p指向第一个结点,j为计数器 while(p&&j<i){ //顺时针向后查找,直到P指向第i个元素或p为空 p=p->next; ++j; } if(!p||j>i) return ERROR; //第i个元素不存在 e=p->data; //取第i个元素 return OK; }//GetElem_L

//插入元素

Status LinkInsert_L(LinkList &L,int i,ElemType e){ //在带头结点的单链线性表L中第i个位置之前插入元素e LinkList p; LinkList s; p=L; int j=0; while(p&&j<i-1){ //寻找第i-1个结点 p=p->next; ++j; } if(!p||j>i-1)//i小于1或者大于表长加1 return ERROR; s=(LinkList)malloc(sizeof(LNode)); //生成新结点 s->data=e; s->next=p->next; //插入L中 p->next=s; return OK; }//LinkInsert_L

//删除元素

Status LinkDelete_L(LinkList &L,int i,ElemType &e){ //在带头结点的单链线性表L中,删除第i个元素,并由e返回其值 LinkList p; LinkList q; p=L; int j=0; while(p->next&&j<i-1){ //寻找第i个结点,并令p指向其前驱 p=p->next; ++j; } if(!(p->next)||j>i-1) return ERROR; //删除位置不合理 q=p->next; p->next=q->next; //删除并释放结点 e=q->data; free(q); }//LinkDelete_L

//主函数

int main() { struct LNode; ElemType e; LinkList L; int i,n,t,a,b; printf("请输入链表中最开始的数据个数\n"); scanf("%d",&n); printf("请输入链表中最开始的数据\n"); CreateList_L(L,n); PrintList_L(L); printf("请输入需要插入元素的位置:"); scanf("%d",&i); printf("请输入需要插入元素的的值:"); scanf("%d",&e); t=LinkInsert_L(L,i,e); if(t==OK) { printf("插入成功!"); printf("插入成功后的链表中元素为:\n"); PrintList_L(L); } else { printf("插入失败!"); } printf("请输入需要得到指定元素的位置:\n"); scanf("%d",&i); a=GetElem_L(L, i,e); if(a==OK) { printf("得到成功!"); printf("得到成功后的元素为%d\n",e); } else { printf("得到失败!"); } printf("请输入需要删除元素的位置:\n"); scanf("%d",&i); b=LinkDelete_L(L,i,e); if(b==OK) { printf("删除成功!"); printf("删除的元素为%d\n",e); printf("删除成功后的链表元素为:\n"); PrintList_L(L); } else { printf("删除失败!\n"); } return 0; }

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/230595.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 使用AmplifyJS和JQuery编写更好更优雅的javascript事件处理代码

    使用AmplifyJS和JQuery编写更好更优雅的javascript事件处理代码

    2022年2月4日
    52
  • PostgreSQL-模糊查询

    PostgreSQL-模糊查询!/bin/bash1模糊查询时,大多数情况下首先想到的是like‘%关键字%’或基于gin索引的正则表达式,gin至少需要三个字符才会使用索引,对于汉语来说十分不方便;2在海量数据的情况下,基于like和gin索引的正则表达式均不理想时,一般采用分词后进行查询.3分词存在两个弊端3.1词库的维护是比较繁重的工作.当词库中没有的关键词会导致查询结果不正确.3.2历史数据的维护工作不好处理

    2022年5月7日
    44
  • 某音信息案例_关于信息泄露的案例

    某音信息案例_关于信息泄露的案例抓包。抓到了一个share_url我访问过去看了下,https://www.iesdouyin.com/share/user/102064772608有数据的。那就拿数据。然后发现它的数字做了字符集映射。搞他。下载.ttf的文件,s3a.bytecdn.cn/ies/resource/falcon/douyin_falcon/static/font/iconfont_da2e2…

    2022年9月26日
    3
  • ncm格式怎么转成mp3_音乐格式转换器

    ncm格式怎么转成mp3_音乐格式转换器首先下载软件:百度网盘提取码:94dh压缩包不大下载只有800k,解压后如下图:将要转换的文件直接拖到main.exe就自动转好了,非常简单快捷,或者吧ncm的文件选择打开方式为main.exe也可以效果如下:…

    2025年8月10日
    7
  • gg修改器修改数值没有用怎么办_gg修改器怎么用怎么修改数值 修改数值方法介绍…[通俗易懂]

    gg修改器修改数值没有用怎么办_gg修改器怎么用怎么修改数值 修改数值方法介绍…[通俗易懂]gg修改器怎么用怎么修改数值修改数值方法介绍GG修改器-全称GameGuardian是非常好用的手机修改器,但它需要ROOT权限,而现在要想ROOT一台手机难度是很大的,因此,本文介绍最新的GG修改免ROOT框架使用方法。现在市面上很多多开框架都支持ROOT,但支持最新安卓Q或者安卓11的却很少,并且运行GG修改器时会经常报错。并且,很多用户发现GG修改器也很难下载。X8沙箱,据说拥有完整系统级别…

    2025年9月13日
    4
  • 电力系统104规约帧报文解析

    电力系统104规约帧报文解析最近被调到电力物联网的项目组,之前一直在做移动终端的我现在在这个项目中得要重新学起了。。~_~!1.电力系统常见概念首先介绍一份ppt:https://wenku.baidu.com/view/557ceb87be23482fb5da4c84.html看着挺好。。。这边文章主要是解释一些电力系统开发中比较常见的概念,也是给自己做个笔记~~~~~~电力系统远动(powersys…

    2022年6月20日
    107

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号