这里主要写了相关的单链表的一些基本操作,是关于代码的,有什么不对的可以跟我在评论区讨论呀

#include<iostream>using namespace std;//单链表typedef struct node{int data;struct node* next;
}Lnode,*Linklist;//初始化
void Initlist(Linklist& L)
{L = new Lnode;L->next = NULL;}
//销毁
void Destroy(Linklist& L)
{Lnode* pre = L;Lnode* p = pre->next;while(p!=NULL){delete pre;pre = p;p = p->next;}delete pre;} //头插法创建单链表
void firstcreate(Linklist& L,int n)//这里一定要加&,因为在进行创建链表,在进行改变
{Lnode *p;for(int i=0;i < n;i++){p = new Lnode;cin >> p->data;p->next=L->next;L->next = p;}}
//尾插法:通常使用尾插法。
void lastcreate(Linklist &L,int n)
{Lnode *p,*r;r = L;for(int i =0;i < n;i++){p = new Lnode;cin >> p->data;r->next = p;r = p;}r->next=NULL;} //得到链表的长度
int Getlength(Linklist L)
{int count = 0;Lnode *p =  L->next;//指向第一结点while(p!=NULL){count++;p = p->next;} return count;}//得到序号为i的元素值
bool getx(Linklist L,int i,int &e)
{if(i<0){return false;}int count = 0;Lnode *p = L->next;while(p!=NULL){count++;if(count==i){e = p->data;}p = p->next;}return true;} //得到值为x的序号i
int geti(Linklist L,int x)
{Lnode *p=L->next;int count = 0;while(p!=NULL){count++;if(p->data==x){return count;}p = p->next;}} //插入 bool Insert(Linklist &L,int e,int i){if(i<0){return false;}//两部分:1:先找到i-1的结点2:在进行插入操作Lnode *p = L->next;int count = 0;while(p!=NULL){count++;if(count==i-1){break;}p = p->next;}Lnode *s = new Lnode;s->data=e;s->next = p->next;p->next = s;return true;}//删除序号为i的节点bool Delete(Linklist &L,int i){Lnode *p = L->next;int count = 0;while(p!=NULL){count++;if(count==i-1){break;}p = p->next;}//上面已经有了i-1的节点位置,进行删除Lnode *q = p->next;p->next = q->next;delete q;return true; } void disp(Linklist L)
{Lnode *p = L->next;//第一个结点while(p!=NULL){cout << p->data << " ";p = p->next;//后移 }cout << endl;
}int main()
{Linklist L;Initlist(L);int n;cin >> n;lastcreate(L,n);disp(L);Getlength(L);cout << "-------------------------" << endl;/*//得到序号i的结点值int i;cin >> i;int e;getx(L,i,e);cout << e << endl;*//*//得到值为x的序号iint x;cin >> x;int m = geti(L,x);cout << m << endl;*//*//插入int e;int i;cin >> e >> i;Insert(L,e,i);disp(L);*///删除int i;cin >> i;Delete(L,i);disp(L); }

单链表的基本操作,建立单链表,插入删除等相关推荐

  1. 链表的特点,单链表的定义、存储结构,单链表的基本操作(判断链表是否为空、销毁链表、清空链表、求链表表长、查找、插入、删除,建立单链表)

    目录 一.链表(链式存储结构)的特点 二.单链表的定义和表示 1.带头结点的单链表 2.单链表的存储结构 三.单链表基本操作的实现 1.单链表的初始化(带头结点的单链表) 2.补充单链表的几个常用简单 ...

  2. 链表的基本操作(创建链表、插入结点、删除结点)

    文章目录 链表创建(尾插法) 链表创建(头插法) 插入结点 删除结点 链表创建(尾插法) 基本思想: 创建一个头结点,让一个指针指向链表最尾端,新建结点插入指针指向的结点之后,然后调整指针位置 #in ...

  3. 链表的基本操作 java_Java-实现链表的基本操作

    Node.java package com.wanali.java_ds.linklist; //节点类 public class Node { public Object data; public ...

  4. 用c语言实现单链表的初始化,建表,查找,求长度,插入,删除等操作,【YTU+2430+C语言习题+链表建立+插入+删除+输(5)...

    的打印.判断链表是否为空.计算链表长度.插入节点.删除节点.删除整个链表.(2) 线性表adt顺序存储实现中的创建.查找.插入和删除等基本操作及相关算法,线性表adt链式存储实现中单链表.循环链表和双 ...

  5. 单链表的基本操作代码实现(C语言版)

    目录 前言: 单链表的基本操作 准备工作(头文件.各种宏定义以及结构体定义) 一.较简单操作 1.单链表的初始化 2.判断单链表是否为空表 3.单链表的销毁 4.单链表的清空 5.求单链表的表长 二. ...

  6. 采用头插法和尾插法建立单链表

    面说一下如果用C语言建立单链表,分为头插法和尾插法两种. 采用头插法建立单链表 该方法从一个空表开始,生成新结点,并将读取到的数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头,即头结点之后 ...

  7. 单链表的建立(C语言):头插法和尾插法建立单链表

    采用头插法建立单链表 该方法从一个空表开始,生成新结点,并将读取到的数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头,即头结点之后,如图2-4所示. 图2-4  头插法建立单链表 头插法建 ...

  8. 【数据结构】链表的基本操作

    文章目录 1.单链表的定义 2.单链表上的基本操作 2.1采用头插法建立单链表 2.2采用尾插法建立单链表 2.3按序号查找结点数据 2.4按值查找表结点 2.5插入节点操作 2.6删除节点操作 3. ...

  9. 线性表基本操作,单链表的建立(头插法,尾插法)、插入、删除、遍历操作的实现(c++ 数据结构 实验二)

    大学数据结构课程的实验题目,掌握线性表的链接存储结构,用c++语言描述 一.实验要求 1.分别用头插法和尾插法建立一个含有若干结点的单链表 2.对已建立的单链表进行插入.删除.遍历输出等操作 二.代码 ...

  10. 建立单链表 单链表的插入_单链列表插入

    建立单链表 单链表的插入 All possible cases: 所有可能的情况: Inserting at beginning 开始插入 Inserting at the ending 在末尾插入 ...

最新文章

  1. python中文意思k-Python中_,__,__xx__的区别
  2. 一道面试题:用shell写一个从1加到100的程序
  3. WEB页面多语言支持解决方案(转自CSDN)
  4. vue npm run serve/dev命令后台运行:nohup npm run serve >web.log 2>1 exit
  5. VLDB 2021 EAB最佳论文:深度解析机器学习的基数估计为何无法实现?
  6. 软件c#语言调用摄像头,C#调用摄像头的几种方式
  7. Acwing 236. 格鲁吉亚和鲍勃(博弈论妙题)
  8. Windows下搭建个人博客(Apache+MySQL+PHP+WordPress)
  9. 12通过作用域链实现闭包
  10. Debug与Release版本的区别详解
  11. 推荐几个最好用的CRM软件,本人亲测
  12. HTML基础(一)HTML标签
  13. sysctl 系统配置
  14. 大学学python要买电脑吗_大学生需要买电脑吗?
  15. oracle minus 利用率,Oracle Minus 取差集(也可以用来做分页,但效率不高)
  16. 服务器按f11才能进系统,电脑每次开机都需要按f11进入选择开启项才能开启系统,...
  17. windows server 2016 活动目录部署系列(十一)AD域控上安装证书服务器
  18. Jieba分词的准确率提升:使用paddle模式进行分词(使用百度飞桨深度学习模型进行分词)
  19. Android The destination folder does not exist or is not writeable
  20. 提高抗打击能力_如何提高心理承受能力或者抗打击能力?

热门文章

  1. 南开大学python编程基础_《Python编程基础》20春期末考核(参考答案)南开大学 答案...
  2. HTML小游戏19 —— html5版开心斗地主小游戏(附完整源码)
  3. 【OpenCV 例程 300篇】231. 特征描述之灰度共生矩阵(GLCM)
  4. Adobe Audition CS6 下载与安装教程
  5. 企业如何选择合适的CRM系统 CRM系统推荐
  6. 我所了解的王坚院士 以及对云计算起源和未来的思考
  7. 一个屌丝程序猿的人生(一百)
  8. java记忆纸牌 计分功能,怎样用数字编码记忆法记忆扑克牌
  9. 一次 G1 堆大小不均问题的排查及解决
  10. 开发数字时钟桌面小控件