#include<stdio.h>
#include<malloc.h>
#include<stdbool.h>
/**
**链表节点的定义
*/
typedef struct  Node{
int data;//数据域
struct Node * PNext;//指针域,存放下一个节点的地址
} Node ,* PNode ;
/**
**创建链表
*/
PNode create_list()
{int len,i;printf("请输入链表的长度:len=\n");scanf("%d",&len);PNode PHead=malloc(sizeof(Node));PHead->PNext=NULL;PNode PTail=PHead;//PTail是永远指向尾节点的指针for(i=0;i<len;i++){int val;printf("请输入第 %d 个元素的值:", i+1);scanf("%d",&val);PNode PNew=malloc(sizeof(Node));PNew->data=val;PNew->PNext=NULL;PTail->PNext=PNew;PTail=PNew;}return PHead;}/**
**对链表进行遍历
*/
void traverse(PNode pHead)
{PNode p=pHead->PNext;while(p!=NULL){printf("%d    ",p->data);p=p->PNext;}printf("\n");
}
/**
*推断链表是否为空
*/bool isempty(PNode pHead)
{if(NULL==pHead->PNext){return true;}else{return false;}
}/**
**获取链表的长度
*/
int list_num (PNode pHead)
{int num=0;PNode p=pHead->PNext;while(p!=NULL){num++;p=p->PNext;}return  num;
}/**
*向链表中插入元素
*/
bool insert_list(PNode pHead,int val ,int pos){
//须要找到第pos个位置。而且须要推断这个位置pos是否合法//i是p所指节点的位置,所以从一開始。为什么要pos-1呢,由于用的是while 当i=pos-1时跳出循环int i=0;PNode p=pHead;while(NULL!=p&&i<pos-1){i++;p=p->PNext;}
//假设插入位置过大,那么P=NULL,
//假设插入的位置是0或者负数,那么i>pos-1
if(i>pos-1||NULL==p){printf("插入位置不合法\n");return false;}
PNode PNew=malloc(sizeof(PNode));
PNew->data=val;
PNode temp=p->PNext;
p->PNext=PNew;
PNew->PNext=temp;
return true;
}/**
**在链表中删除节点
*/
delete (PNode PHead,int pos , int * pval)
{int i=0;PNode p=PHead;//我们要删除p后面的节点,所以p不能指向最后一个节点 p->next!=NULLwhile(p->PNext!=NULL&&i<pos-1){p=p->PNext;i++;}if(i>pos-1||p->PNext==NULL){printf("删除位置不合法\n");return false;}PNode temp=p->PNext;p->PNext=temp->PNext;free(temp);}
int main()
{PNode PHead= create_list();
if(isempty(PHead))
printf("链表为空\n");
printf("链表的长度为:%d\n",list_num(PHead));
traverse(PHead);
//insert_list(PHead,55,1);
int val;delete(PHead,6,&val);
traverse(PHead);
return 0;
}

转载于:https://www.cnblogs.com/gcczhongduan/p/5152893.html

数据结构基础(3)---C语言实现单链表相关推荐

  1. 【数据结构】【C语言】------ 单链表

    前言 大家好,我是Abert. 这篇文章和大家分享用C语言实现数据结构中的单链表. 单链表可以看作是"拆分开"的顺序表.在顺序表的基础上,单链表做了一些优化,但同时也丧失了一些顺序 ...

  2. java单链表输出_数据结构基础------1.线性表之单链表的创建与输出方法(Java版)...

    基础知识: 线性表(linear list),是其组成元素间具有线性关系的一种线性结构. 线性表有 ①顺序存储结构(sequential storage structure) 顺序存储结构可以简单的理 ...

  3. c语言实现单链表数据结构,数据结构与算法-C语言实现单链表,以及单链表的常用方法...

    C语言知识点提要: Struct:Struct 内可放置各种类型的数据 格式为: Struct TagName { .............(元素类型 元素名称) } 不同Struct内的成员名称可 ...

  4. c语言实现可变单链表,c语言实现单链表

    c语言实现单链表 c语言实现单链表 定义 创建 销毁 清空 打印 获取长度 查询 删除第pos个结点 在第pos插入结点 定义 首先来看一看单链表的定义(看看百度的) 单链表是一种链式存取的数据结构, ...

  5. TypeScript算法专题 - blog1.基于TypeScript语言的单链表实现

    TypeScript算法专题 - 基于TypeScript语言的单链表实现 李俊才 CSDN:jcLee95 邮箱:291148484@163.com 专题目录:https://blog.csdn.n ...

  6. c语言用链表实现成绩管理系统,C语言基于单链表得学生成绩管理系统

    前言 传说中讲课通俗而不庸俗,说话风流而不下流的小编又来了哦,今天的主要内容是:C语言基于单链表得学生成绩管理系统.首先给年夜家总结下为什么你们学习C语言会觉得难,尤其是对单链表这块,主要原因得是因为 ...

  7. C语言基于单链表的词典软件

    C语言基于单链表的词典软件 实验1: 日期:2022-10-4 类型:设计型 题目:基于单链表的词典软件 内容: 利用单链表存储词典,可以实现从文件中加载数据.查询单词.添加词条.删除词条.将词典保存 ...

  8. 数据结构与算法(二)单链表(Singly linked list)

    数据结构与算法(二)单链表(Singly linked list) 链表(Linked list) Python完整功能实现 LeetCode思想实践: 链这个东西大家一定都不陌生, 脖子上有项链, ...

  9. java语言实现单链表---不含头结点

    java语言实现单链表---不含头结点 一.相关概念 1.什么是线性表 2.什么是顺序表 3.什么是链表 4.单链表.双链表.循环单链表.循环双链表 5.头结点和首结点 6.常见的栈和队列与线性表的关 ...

  10. C语言实现单链表(带头结点)的基本操作(创建,头插法,尾插法,删除结点,打印链表)

    http://blog.csdn.net/xiaofeige567/article/details/27484137 C语言实现单链表(带头结点)的基本操作(创建,头插法,尾插法,删除结点,打印链表) ...

最新文章

  1. oracle备份镜像,Oracle RMAN两种备份方式 – 备份集备份与镜像复制备份
  2. html背景mov,科技常识:html5自动播放mov格式视频的实例代码
  3. SQL学习---第一章
  4. Mysql 死锁过程及案例详解之显式与隐式锁Explicit Table Lock Implicit Table Lock
  5. 完课率最高 | 带学吴恩达《机器学习》课程和作业,带打Kaggle全球顶级大赛!...
  6. pep 8 规范的一些记录
  7. windows环境实现批量加密文件,并创建加密文件同名(不带后缀)的文件夹,然后把加密文件和图片和文本放入这个文件夹。
  8. handler 消息处理机制
  9. ICS共享上网方案与配置
  10. 复选框与文字无法对齐问题
  11. linux socket 104 错误,linux socket连接中 ERRNO错误
  12. 阶段3 2.Spring_06.Spring的新注解_2 spring的新注解-Bean
  13. word、excle、ppt文档图标显示异常的解决方案!
  14. 学堂在线 UWP 首版
  15. 大数据预测(大数据核心应用)
  16. 能切换双显卡的android,安卓模拟器如何把双显卡切换成高性能显卡
  17. C#利用JScript自动计算字符串公式方法
  18. 伴雨夜谈【即便大雨倾盆,也无法击起心中的波澜】
  19. 获取比Administrator还高的权限——SYSTEM权限
  20. 帝国时代(1)--献给曾经的游戏

热门文章

  1. 《Linux就该这么学》正式版电子书发布!
  2. 搭建自己的 CDN 会有哪些乐趣和好处?
  3. 时间序列分析导论书摘:自相关图意义分析
  4. 如何制定自己的博客园皮肤
  5. 结合CRT与欧拉定理高阶幂求余
  6. Mysql GROUP_CONCAT 使用注意事项
  7. 使用 Docker 一步搞定 ZooKeeper 集群的搭建
  8. 使用redis中的watch解决秒杀系统中抢购问题
  9. sprint3个人总结
  10. 不用static,巧用对象.方法调用java中的函数