数据结构(C语言版)学习笔记2-单链表

1.单链表定义

typedef int ElemTypes;
typedef struct node
{ElemTypes data;  //数据域struct node *next;//指针域
}Slinks;

2.单链表基本操作

//1.单链表初始化(带头结点)
Slinks *creatslink(int i);
//2.求链长(带头结点)
ElemTypes ListLengths(Slinks*head);
//3.取链表内元素
int GetElems(Slinks*L,int i,ElemTypes*t);
//4插入操作
int InsertLists(Slinks*L,int i,ElemTypes e);
//5.删除操作
int DeleteLists(Slinks*L,int i);
//6.定位操作
int LocateLists(Slinks*L,ElemTypes e);
//7.输出链表
void Lists(Slinks*L);

3.完整程序

完整程序包括三个文件:

mains.c(主程序)
用于测试单链表基本操作
Slink.h
标准库导入,存放类型定义,符号定义等预定义内容及函数声明。
Slink.c
存放单链表基本操作函数主体内容。

①mains.c

//mains.c
#include"Slink.h"void main()
{int j=0;Slinks *L=NULL; //创建一个结构体指针指向单向链表头printf("\n-------程序运行开始!-------\n");L=creatslink(5);Lists(L);printf("\n链表长为:%d\n",ListLengths(L));//3.取链表内元素GetElems(L,3,&j);printf("表内第3个元素为:%d\n",j);InsertLists(L,2,666);printf("\n链表长为:%d\n",ListLengths(L));Lists(L);printf("删除操作%d\n", DeleteLists(L,3));Lists(L);printf("元素666在第%d号元素。\n", LocateLists(L,666));printf("\n-------程序运行结束!-------\n");
}

②Slink.h

//Slink.h
#ifndef _SLINK_H
#define _SLINK_H
#include"stdio.h"
#include"stdlib.h"typedef int ElemTypes;
typedef struct node
{ElemTypes data;  //数据域struct node *next;//指针域
}Slinks;/*基本操作声明*/
//1.单链表初始化(带头结点)
Slinks *creatslink(int i);
//2.求链长(带头结点)
ElemTypes ListLengths(Slinks*head);
//3.取链表内元素
int GetElems(Slinks*L,int i,ElemTypes*t);
//4插入操作
int InsertLists(Slinks*L,int i,ElemTypes e);
//5.删除操作
int DeleteLists(Slinks*L,int i);
//6.定位操作
int LocateLists(Slinks*L,ElemTypes e);
//7.输出链表
void Lists(Slinks*L);#endif

③Slink.c

//Slink.c
#include"Slink.h"//1.单链表初始化(带头结点)
Slinks *creatslink(int i)
{Slinks *p,*s,*head;int j=0;p=head=(Slinks*)malloc(sizeof(Slinks));//创建头指针for(j=0;j<i;j++){   s=(Slinks*)malloc(sizeof(Slinks));//创建第j+2个结点存储第j+1个元素printf("请输入第%d个元素:",j+1);scanf("%d",&s->data);               //结点数据域赋值p->next=s;                          //将上一个结点的next指针指向该结点p=s;                          //将P指针指向该结点}p->next=NULL;//将最后一个结点的next指针置空printf("链表创建成功!head=%o\n",head);return head;
}
//2.求表长(含首元结点)
ElemTypes ListLengths(Slinks*head)
{int i;Slinks*p=head;for(i=0;p!=NULL && p->data;i++)//循环历遍结点个数p=p->next;return i;//含首元结点
}
//3.取链表内元素
int GetElems(Slinks*L,int i,ElemTypes*t)
{int n;Slinks*p=L;if(i<1 || i>ListLengths(L))return 0;//参数i不合理,取元素失败返回0for(n=0;n<i;n++)//循环历遍结点个数p=p->next;*t=p->data;     //其值通过指针t返回return 1;
}
//4.插入操作
int InsertLists(Slinks*L,int i,ElemTypes e)
{Slinks*p=L,*t;int n;if(i<1 || i>ListLengths(L))return 0;else{for(n=0;n<i-1;n++)p=p->next;t=p->next;p->next=(Slinks*)malloc(sizeof(Slinks));p=p->next;p->data=e;p->next=t;return 1;}
}
//5.删除操作
int DeleteLists(Slinks*L,int i)
{Slinks*p=L,*t;int n;if(i<1 || i>ListLengths(L))return 0;else{for(n=0;n<i-1;n++)p=p->next;t=p->next;p->next=t->next;free(t);return 1;}
}
//6.定位操作
int LocateLists(Slinks*L,ElemTypes e)
{Slinks*p=L;int n;for(n=0;p->data!=e && p!=NULL;n++)p=p->next;if(p->data == e)//找到,返回位序return n;else            //没找到,返回0return 0;
}
//7.输出链表
void Lists(Slinks*L)
{Slinks*p=NULL;p=L;p=p->next;                      //跳过首元结点printf("链表内元素为:\n");while(p!=NULL && p->data){printf("-%d",p->data);p=p->next;}printf("\n");
}

本次学习笔记如上所示,不足之处欢迎大家批评指正。

数据结构(C语言版)学习笔记2-单链表相关推荐

  1. 逆置单链表c语言程序,(数据结构C语言版)顺序表和单链表的逆置

    <(数据结构C语言版)顺序表和单链表的逆置>由会员分享,可在线阅读,更多相关<(数据结构C语言版)顺序表和单链表的逆置(7页珍藏版)>请在人人文库网上搜索. 1.实验1-1顺序 ...

  2. 邓公数据结构C++语言版学习笔记1

    1. 对于计算幂2n2^n2n的算法优化 暴力算法时间复杂度O(n)O(n)O(n) __int64 power2BF_I(int n) //幂函数2^n算法(蛮力迭代版),n >= 0{ __ ...

  3. 邓公数据结构C++语言版学习笔记——二叉树

    二叉树的遍历 一. preorder--先序遍历VLR 1. 递归先序遍历 2. 迭代先序遍历 3.先序遍历图解 二. inorder--先序遍历LVR 1. 递归中序遍历 2.迭代中序遍历 3.迭代 ...

  4. 《数据结构》c语言版学习笔记——单链表结构(线性表的链式存储结构Part1)

    线性表的链式存储结构 数据结构系列文章 第二章 单链表结构 文章目录 线性表的链式存储结构 前言 一.单链表的建立 代码 二.单链表的读取 代码 三.单链表的插入 代码 四.单链表的删除 代码 五.单 ...

  5. 《数据结构》c语言版学习笔记——其他链表(线性表的链式存储结构Part2)

    线性表的链式存储结构 数据结构系列文章 第三章 循环链表.双向链表 文章目录 线性表的链式存储结构 前言 一.循环链表 (一)定义 (二)尾指针 二.双向链表 (一)定义 (二)代码 总结 前言 提示 ...

  6. 《数据结构》c语言版学习笔记——线性表的顺序存储结构

    线性表的顺序存储结构 第一章 线性表的顺序存储结构 文章目录 线性表的顺序存储结构 前言 一.顺序存储结构的建立 1.条件 2.代码 二.顺序存储结构的获得元素 1.条件 2.代码 三.顺序存储结构的 ...

  7. 数据结构(c语言版)笔记6,2020考研计算机《数据结构(C语言版)》复习笔记(6)

    2020年计算机考研复习已经开始,新东方在线在此整理了2020考研计算机<数据结构(C语言版)>复习笔记(6),希望能帮助大家! 第六章 树知识点整理 树是n个结点的有限集合,非空时必须满 ...

  8. 数据结构(C语言版)严蔚敏(树、二叉树的相关概念笔记)

    数据结构(C语言版)严蔚敏(树的相关概念笔记) 1. 树中一个节点的孩子个数称为该节点的度,树中节点的最大度数称为树的度: 2. 度大于0的节点称为[分支节点](非终端节点),度为0的节点称为[叶子节 ...

  9. 数据结构C语言版(清华大学_唐国民_第3版)单链表

    //数据结构C语言版(清华大学_唐国民_第3版) //单链表功能实现,书 P25 例子2.3.3,与书上代码有些许出入,不用在意,重要的是思路 #include<stdio.h> #inc ...

  10. Go语言开发学习笔记(持续更新中)

    Go语言开发学习笔记(持续更新中) 仅供自我学习 更好的文档请选择下方 https://studygolang.com/pkgdoc https://www.topgoer.com/go%E5%9F% ...

最新文章

  1. 【组队学习】【32期】李宏毅机器学习(含深度学习)
  2. Python基础05 缩进和选择
  3. iOS自定义的UISwitch按钮
  4. mysql事务传播属性_Spring事务传播属性和隔离级别详细介绍
  5. CodeForces 1191A---Tokitsukaze and Enhancement
  6. C/C++ putchar函数 - C语言零基础入门教程
  7. Java类类getGenericSuperclass()方法及示例
  8. python 保存图片代码_最简单的selenium+Python自动右键保存图片
  9. 车载wince系统刷界面ui_UI入门秘笈,你想知道吗?
  10. 结合nginx源码学习error_page和proxy 指令的关系
  11. PDF加页码怎么设置?这里有你想知道的答案
  12. 如何给计算机c盘加内存,电脑C盘内存太小_这个方法教你扩大C盘空间 - 驱动管家...
  13. php制作特效文字,PPT制作文字特效 PPT特效文字制作教程
  14. 字典(python学习)
  15. 深度学习7日入门-CV疫情特辑心得
  16. windows挂载webdav
  17. OV、DV、EV证书的区别
  18. 火猴之ppt动画效果实现(firemonkey)
  19. Makefile中的奇葩字符
  20. 史上最全的IDEA快捷键总结

热门文章

  1. XJOI 7970 优秀数
  2. 家庭自动炒菜机设计(论文+CAD图纸+SolidWorks三维+ppt+驱动控制子程序)
  3. 赛思信安:实现数据全生命周期管理
  4. 【华为账号服务】【FAQ】Account Kit常见咨询合集--登录相关问题
  5. 微信小程序输入框字体颜色设定和输入框中输入字体的设定
  6. 计算机数字时间格式,时间标记 (计算机)
  7. 管理格言集锦(收集)
  8. 修改阿凡提服务器时间,《阿凡提》因超时错失奥斯卡 主办方发证书表示欣赏...
  9. Android图片缓存管理
  10. open( ) 函数简介