Description

建立具有10个元素的单链表,并能对该表进行查找、插入、删除等基本操作
.cpp文件后缀名

Source Code

#include<stdio.h>
#include<malloc.h>typedef int ElemType;typedef struct LNode
{ElemType data;     //存放元素值struct LNode *next;  //指向后继结点
}LinkNode;              ///单链表结点类型LinkNode
//尾插法建立单链表
//从一空表开始依次读取数组a中元素,生成结点s插入表尾,借用一个指针r,使其始终指向当前链表的表尾
void CreateList(LinkNode *&L,ElemType a[],int n)
{LinkNode *s,*r;L=(LinkNode *)malloc(sizeof(LinkNode));r=L;for(int i=0;i<n;i++){s = (LinkNode *)malloc(sizeof(LinkNode));  //为插入的数据创建结点,由指针s指向s->data = a[i];r->next = s;r=s;}r->next = NULL;
}
//输出线性表
void DispList(LinkNode *L)
{LinkNode *p = L->next;while(p!=NULL){printf("%d ",p->data);p = p->next;}printf("\n");
}
//求线性表的长度
//让P指向头结点,n用来累计结点的个数
int ListLength(LinkNode *L)
{int n = 0;LinkNode *p = L;while(p->next!=NULL){n++;p = p->next;}return n;
}
//插入数据元素
//找到第i-1个结点由P指向它。若第i-1个结点存在,将值为e的结点(由s指向)插入的p所指结点的后面
bool ListInsert(LinkNode *&L,int i,ElemType e)
{int j = 0;LinkNode *p = L,*s;if(i<0)return false;while(j<i-1 && p!=NULL){j++;p = p->next;}if(p==NULL)return false;else{s = (LinkNode *)malloc(sizeof(LinkNode)); //创建新结点ss->data = e;                                //将e赋予s的值s->next = p->next;                          //将结点s插入到p的后面p->next = s;return true;}
}
//按元素查找
int LocateElem(LinkNode *L,ElemType e)
{int i=1;LinkNode *p=L->next;                          //P指向首结点,i置为1(首结点的序号为1)while(p!=NULL && p->data!=e){p = p->next;i++;}if(p==NULL)return 0;elsereturn i;
}
//删除数据元素
//找到第i-1个结点由P指向它。若第i-1个结点存在,也存在后继结点(由q指向),则删除q所指结点
bool ListDelete(LinkNode *&L,int i,ElemType &e)
{int j = 0;LinkNode *p = L,*q;                                //p指向头结点,j置为0(头结点的序号为0)if(i<=0)return false;while(j<i-1&&p!=NULL){j++;p = p->next;}if(p==NULL)return false;else{q=p->next;if(q==NULL)return false;e=q->data;p->next = q->next;                          //从链表中删除q结点free(q);return true;}
}
int main(void)
{ElemType e;ElemType i;ElemType a[10];LinkNode * L;L = (LinkNode *)malloc(sizeof(LinkNode));L->next=NULL; printf("请输入10个整形元素:");for(i=0;i<10;i++){scanf("%d",&a[i]);}CreateList(L,a,10);printf("表长:%d\n",ListLength(L));printf("LinkNode中的元素为:");DispList(L);printf("请输入需要插入元素的位置和值:");scanf("%d%d",&i,&e);ListInsert(L,i,e);printf("表长:%d\n",ListLength(L));printf("LinkNode中的元素为:");DispList(L);printf("请输入需要查找的元素值:");scanf("%d",&e);printf("%d所在的位置是:%d\n",e,LocateElem(L,e));printf("请输入需要删除元素的序号:");scanf("%d",&i);ListDelete(L,i,e);printf("LinkNode中的元素为:");DispList(L);printf("表长:%d\n",ListLength(L));return 0;
}

Computational Results

单链表基本操作的实现(数据结构)相关推荐

  1. 数据结构-单链表基本操作-C语言代码

    单链表基本操作 1.头插法建立单链表 2.尾插法建立单链表 3.查找结点 3.修改结点 4.插入结点 5.删除结点 本篇只有c语言代码,具体思路讲解请看这篇博客:数据结构-线性结构-单链表 1.头插法 ...

  2. 【数据结构|链表】单链表基本操作

    文章目录 一.链表 二.链表分类 三.单链表基本操作   3.1 单链表存储结构Init   3.2 遍历链表visitlist函数   3.3 求表长length   3.4 查找listfind ...

  3. 【数据结构-C】单链表基本操作及图解分析

    目录 单链表介绍​ 单链表基本操作及图解分析 1.创建一个新结点 2.头插法向单链表中插入结点​ 3. 尾插法向单链表中插入结点​ 4.头删法删除单链表结点​ 5.尾删法删除单链表结点​ 6.返回单链 ...

  4. C 语言单链表基本操作

    复习下数据结构,使用 C 语言实现了带头节点的单链表.单链表基本操作有:节点初始化.链表初始化.插入节点.查找节点.删除节点和删除链表等.下面的程序中,list.h 为头文件, 其中包含了上述基本操作 ...

  5. 7-4 单链表基本操作

    7-4 单链表基本操作 请编写程序实现单链表插入.删除结点等基本算法.给定一个单链表和一系列插入.删除结点的操作序列,输出实施上述操作后的链表.单链表数据域值为整数. 输入格式: 输入第1行为1个正整 ...

  6. 237删除链表中的节点(单链表基本操作)

    1.题目描述 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点. 说明: 链表至少包含两个节点. 链表中所有节点的值都是唯一的. 给定的节点为非末尾节点并且一定 ...

  7. C语言单链表基本操作总结

    C语言单链表基本操作     本文是参考他人实现的C语言单链表,对多篇博文整理的结果,仅作为学习笔记.文末有参考出处. 1.单链表定义 链表是通过一组任意的存储单元来存储线性表中的数据元素,这些存储单 ...

  8. 单链表基本操作的实现

    单链表基本操作的实现 [PS]: 由于笔者的能力水平有限,如果遇到相关错误或者存在歧义的地方,欢迎在下方评论区留言联系笔者,如果你觉得这篇文章对你有帮助,那么不妨动动你的小手点赞收藏转发,让更多的人看 ...

  9. C语言实现单链表基本操作

    C语言实现单链表基本操作的 目录

  10. 数据结构-单链表基本操作(C语言实现)

    参考书:王道考研数据结构 (此贴为博主学习408的笔记,因博主也是学习者,个人总结如有错误欢迎指正.如有侵权请告知,马上删除致歉)​​ 单链表定义 单链表是线性表的链式存储,通过一组任意的存储单元来存 ...

最新文章

  1. R语言ggplot2可视化分面图(facet_grid):去除分面图灰色矩形框以及框中的标签、Getting rid of facet_grid labels on those gray boxes
  2. BZOJ3133[Baltic2013]ballmachine
  3. jqueryui的Tooltip使用方法
  4. 基于python实现遗传算法
  5. QQ玩一玩广告与音效使用总结
  6. 控制变量!控制变量!
  7. [附源码]Nodejs计算机毕业设计交通事故证据交易平台Express(程序+LW)
  8. 如何去除搜索引擎上的广告
  9. mac导出iphone手机上的ipa包
  10. vc6.0 图片显示(个人笔记)
  11. 预防网络钓鱼攻击入门
  12. java编写桌球游戏素材小球图片_JAVA——桌球游戏(动画)
  13. 新浪云 股票实时筛选系统 设计
  14. 单播,组播,广播概念
  15. input正则表达式
  16. 关于马云的跨境支付技术
  17. 用c语言求解ax2 bx c=0方程的根,用公式法求解一元二次方程ax
  18. 【嵌入式系统开发】学习笔记四:嵌入式开发的基本概念与工具链
  19. XDR: External Data Representation
  20. 分享几个ip定位api

热门文章

  1. Linux与Windows下Shebang的执行
  2. 腾讯投资帝国 VS 阿里实业版图,投资数据背后有何玄机?
  3. StreamSets基本使用
  4. 川大计算机学硕奖学金,四川大学研究生奖助体系实施方案
  5. 【三】ElasticSearch 索引操作
  6. [高通平台]9008模式下如何读取MSMID和serial_number
  7. 1月第2周全球域名总量TOP20:开曼群岛升至第九
  8. Golang中select的实现原理
  9. Docker 入门看这一篇就够了!
  10. [中秋特别定制版本]绝美登录页面搭配[登录数据存储到服务器](服务器宝塔数据库开通+短信服务开通+后端redis验证码缓存)