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)
上一篇 2026年2月13日 下午3:01
下一篇 2026年2月13日 下午3:22


相关推荐

  • KARMA: 利用多智能体进行知识图谱扩展

    KARMA: 利用多智能体进行知识图谱扩展

    2026年3月16日
    2
  • Moya 浅析_motivationally

    Moya 浅析_motivationallyMoya是一个高度抽象的网络库,他的理念是让你不用关心网络请求的底层的实现细节,只用定义你关心的业务。且Moya采用桥接和组合来进行封装(默认桥接了Alamofire),使得Moya非常好扩展,让你不用修改Moya源码就可以轻易定制。官方给出几个Moya主要优点:编译时检查APIendpoint权限让你使用枚举定义各种不同Target,endpoints把stubs当做…

    2025年7月28日
    5
  • linux查看nfs端口命令,LinuxNFS端口命令是什么? 爱问知识人

    linux查看nfs端口命令,LinuxNFS端口命令是什么? 爱问知识人在Linux系统中,我们也会常遇到NFS的设置。针对这方面,我们这次主要讲解一下LinuxNFS的端口配置。看看如何设置可以调节好防火墙和端口的设置。#LinuxNFS服务固定端口及防火墙配置#1。在LINUX上正常安装NFS服务2。修改/etc/service,添加以下内容(端口号必须在1024以下,且未被占用)#Localservicesmountd1011/tcp#rpc。mount…

    2022年6月27日
    52
  • Py之dlib:Python库之dlib库的简介、安装、使用方法详细攻略

    Py之dlib:Python库之dlib库的简介、安装、使用方法详细攻略Py之dlib:Python库之dlib库的简介、安装、使用方法详细攻略目录dlib库的简介dlib库的安装dlib库的使用函数0、利用dlib.get_frontal_face_detector函数实现人脸检测可视化1、hog提取特征的函数2、CNN提取特征的函数dlib库的简介一个机器学习的开源库,包含了机器学习的很多算…

    2022年6月29日
    44
  • java .foreach数组遍历_foreach遍历ArrayList和数组

    java .foreach数组遍历_foreach遍历ArrayList和数组遍历ArrayList的方式有迭代器,foreach循环,get(i)等方式。其中迭代器和get方法都有具体的代码可以看到。foreach循环是怎么实现的呢?下面通过反编译class的方式来看看JAVA是如何处理foreach遍历ArrayList、数组的。先说结论:foreach遍历list底层还是使用的迭代器;foreach遍历数组还是传统的i=0到i=length-1遍历,只是写法上封装成f…

    2022年7月22日
    25
  • mysql 获取当前时间戳_mysql获取毫秒时间戳

    mysql 获取当前时间戳_mysql获取毫秒时间戳使用函数:Now,current_timestamp,unix_timestampSELECTNOW(),NOW(3),NOW(6),current_timestamp(),current_timestamp(6),unix_timestamp(current_timestamp(3)),REPLACE(unix_timestamp(current_timestamp(3)),’.’,”),unix_timestamp(current_timestamp(3))*1000SELECTNOW(),

    2026年4月16日
    5

发表回复

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

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