单链表的基本操作,建立单链表,插入删除等
这里主要写了相关的单链表的一些基本操作,是关于代码的,有什么不对的可以跟我在评论区讨论呀
#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.带头结点的单链表 2.单链表的存储结构 三.单链表基本操作的实现 1.单链表的初始化(带头结点的单链表) 2.补充单链表的几个常用简单 ...
- 链表的基本操作(创建链表、插入结点、删除结点)
文章目录 链表创建(尾插法) 链表创建(头插法) 插入结点 删除结点 链表创建(尾插法) 基本思想: 创建一个头结点,让一个指针指向链表最尾端,新建结点插入指针指向的结点之后,然后调整指针位置 #in ...
- 链表的基本操作 java_Java-实现链表的基本操作
Node.java package com.wanali.java_ds.linklist; //节点类 public class Node { public Object data; public ...
- 用c语言实现单链表的初始化,建表,查找,求长度,插入,删除等操作,【YTU+2430+C语言习题+链表建立+插入+删除+输(5)...
的打印.判断链表是否为空.计算链表长度.插入节点.删除节点.删除整个链表.(2) 线性表adt顺序存储实现中的创建.查找.插入和删除等基本操作及相关算法,线性表adt链式存储实现中单链表.循环链表和双 ...
- 单链表的基本操作代码实现(C语言版)
目录 前言: 单链表的基本操作 准备工作(头文件.各种宏定义以及结构体定义) 一.较简单操作 1.单链表的初始化 2.判断单链表是否为空表 3.单链表的销毁 4.单链表的清空 5.求单链表的表长 二. ...
- 采用头插法和尾插法建立单链表
面说一下如果用C语言建立单链表,分为头插法和尾插法两种. 采用头插法建立单链表 该方法从一个空表开始,生成新结点,并将读取到的数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头,即头结点之后 ...
- 单链表的建立(C语言):头插法和尾插法建立单链表
采用头插法建立单链表 该方法从一个空表开始,生成新结点,并将读取到的数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头,即头结点之后,如图2-4所示. 图2-4 头插法建立单链表 头插法建 ...
- 【数据结构】链表的基本操作
文章目录 1.单链表的定义 2.单链表上的基本操作 2.1采用头插法建立单链表 2.2采用尾插法建立单链表 2.3按序号查找结点数据 2.4按值查找表结点 2.5插入节点操作 2.6删除节点操作 3. ...
- 线性表基本操作,单链表的建立(头插法,尾插法)、插入、删除、遍历操作的实现(c++ 数据结构 实验二)
大学数据结构课程的实验题目,掌握线性表的链接存储结构,用c++语言描述 一.实验要求 1.分别用头插法和尾插法建立一个含有若干结点的单链表 2.对已建立的单链表进行插入.删除.遍历输出等操作 二.代码 ...
- 建立单链表 单链表的插入_单链列表插入
建立单链表 单链表的插入 All possible cases: 所有可能的情况: Inserting at beginning 开始插入 Inserting at the ending 在末尾插入 ...
最新文章
- python中文意思k-Python中_,__,__xx__的区别
- 一道面试题:用shell写一个从1加到100的程序
- WEB页面多语言支持解决方案(转自CSDN)
- vue npm run serve/dev命令后台运行:nohup npm run serve >web.log 2>1 exit
- VLDB 2021 EAB最佳论文:深度解析机器学习的基数估计为何无法实现?
- 软件c#语言调用摄像头,C#调用摄像头的几种方式
- Acwing 236. 格鲁吉亚和鲍勃(博弈论妙题)
- Windows下搭建个人博客(Apache+MySQL+PHP+WordPress)
- 12通过作用域链实现闭包
- Debug与Release版本的区别详解
- 推荐几个最好用的CRM软件,本人亲测
- HTML基础(一)HTML标签
- sysctl 系统配置
- 大学学python要买电脑吗_大学生需要买电脑吗?
- oracle minus 利用率,Oracle Minus 取差集(也可以用来做分页,但效率不高)
- 服务器按f11才能进系统,电脑每次开机都需要按f11进入选择开启项才能开启系统,...
- windows server 2016 活动目录部署系列(十一)AD域控上安装证书服务器
- Jieba分词的准确率提升:使用paddle模式进行分词(使用百度飞桨深度学习模型进行分词)
- Android The destination folder does not exist or is not writeable
- 提高抗打击能力_如何提高心理承受能力或者抗打击能力?
热门文章
- 南开大学python编程基础_《Python编程基础》20春期末考核(参考答案)南开大学 答案...
- HTML小游戏19 —— html5版开心斗地主小游戏(附完整源码)
- 【OpenCV 例程 300篇】231. 特征描述之灰度共生矩阵(GLCM)
- Adobe Audition CS6 下载与安装教程
- 企业如何选择合适的CRM系统 CRM系统推荐
- 我所了解的王坚院士 以及对云计算起源和未来的思考
- 一个屌丝程序猿的人生(一百)
- java记忆纸牌 计分功能,怎样用数字编码记忆法记忆扑克牌
- 一次 G1 堆大小不均问题的排查及解决
- 开发数字时钟桌面小控件