今年暑假正式开始我的数据结构学习之旅,虽然之前学过一遍了,但是感觉完全是应付考试,没有认真学

所以,今年打算从头到尾正式学习一遍,每天持续更新学习成果。今天重温了一下链表,分享。

#include<stdio.h>
#include<malloc.h>
typedef struct Node
{int data;int len;struct Node *pnext;} Node,*pnode;
pnode CreateNode()//生成节点,尾插法
{pnode phead=(pnode)malloc(sizeof(Node));if(phead==NULL){printf("fail to allocate memory");return -1;}phead->pnext=NULL;printf("please input some number q to quit:\n");int n;pnode ph=phead;for(int i=0; i<5; i++){pnode p=(pnode)malloc(sizeof(Node));if(p==NULL){printf("fail to allocate memory");return -1;}p->data=(i+2)*19;phead->pnext=p;p->pnext=NULL;phead = p; //头节点后移}return ph;//返回未后移之前的头节点
}
int list(pnode head)//打印链表
{int count=0;printf("遍历结果:\n");while(head->pnext!=NULL){printf("%d\t",head->pnext->data);head=head->pnext;count++;}printf("链表长度为:%d\n",count);return count;
}
void InSert(pnode head,int count)//插入节点
{int n,number,c=1;printf("请输入插入位置:\n");scanf("%d",&n);if(n>count+1){printf("超过链表范围\n");exit(-1);}printf("请输入插入的数:");scanf("%d",&number);pnode p=(pnode)malloc(sizeof(Node));p->data=number;while(c<n){head=head->pnext;c++;}p->pnext=head->pnext;head->pnext=p;
}
void Delete(pnode head)//删除节点
{int n;int m=0;printf("请输入想要删除的数字:");scanf("%d",&n);while(head->pnext!=NULL){if(head->pnext->data==n){head->pnext=head->pnext->pnext;m=1;//立个flag证明进来过}head=head->pnext;if(head==NULL)break;}if(m==0)printf("没有找到想要删除的数字\n");}
int main()
{pnode p=CreateNode();int m=list(p);//InSert(p,m);Delete(p);list(p);free(p); //最后一定记得释放内存return 0;
}

我是在linux下codeblocks环境下,之前因为没有最后free(节点)导致内存爆满,直接死机了,希望注意这点。

C 关于链表的一些操作相关推荐

  1. 链表的各种操作实现 链表逆序 链表排序 有序链表归并 链表存在环的判定

    链表的各种操作实现 链表逆序 链表排序 有序链表归并 链表存在环的判定 链表基本操作实现 c语言版本, 该程序在visual c++ 6.0上调试通过! 本人写该程序完全是为学习交流之用,还望大家多多 ...

  2. java 结构体_Java实现单链表的简单操作

    文章目录 前言 一.基本实现思路 二.代码实现 1.定义结点类2.定义链表类3.测试调用4.结果 总结 前言 用Java实现单链表的简单操作,阅读本文和上一篇文章体会Java中类与C++中结构体指针的 ...

  3. 数据结构(单链表的相关操作)

    为什么80%的码农都做不了架构师?>>>    #include <stdio.h> #include <stdlib.h> #define ElemType ...

  4. C++中链表的一些操作

    //C++中链表的一些操作,VS2005下调试通过. #include <Windows.h> #include <iostream> using namespace std; ...

  5. 单链表的实现操作(C语言)

    //单链表的实现操作 #include <stdio.h> #include <malloc.h> #include <stdlib.h> //数据类型定义 typ ...

  6. 链表的常见操作(转)

    链表的常见操作 链表是数据结构的重要内容,在计算机程序中应用广泛,同时也是各公司笔试题目的重点. 以下简单实现了链表的一些操作,包括创建.增加节点.删除节点.单链表逆置.合并有序链表等. 一.链表创建 ...

  7. 单链表的简单操作与演示

    单链表的简单操作与演示 单链表 单链表概念和简单的设计 单链表是一种链式存取的数据结构,链表中的数据是以结点来表示的,每个结点由元素和指针构成. 元素表示数据元素的映象,就是存储数据的存储单元:指针指 ...

  8. python3实现链表的基础操作

    python3实现链表的基础操作 实现的步骤: 一.建立链表模型 二.遍 历 链 表 三.获取链表长度 四.追 加 节 点 五.插 入 操 作 六.主 调 函 数 分析: (1)建立链表模型: 首先我 ...

  9. SWUSTOJ #953 单链表的删除操作的实现

    SWUSTOJ #953 单链表的删除操作的实现 题目 输入 输出 样例输入 样例输出 源代码 题目 建立长度为 n 的单链表,删除第 i 个结点之前的结点. 输入 第一行为自然数 n,表示链式线性表 ...

  10. 数据结构单链表的基础操作(C语言)

    效果如图: 代码及详情如下:(文末总结) 目录 //主函数 //菜单 //创建链表 //插入结点 //删除结点 //查找结点 //链表长度 //打印链表 //清空链表 //逆置链表 //删除偶数元素结 ...

最新文章

  1. PL/SQL ——分页编程
  2. 优先级调度和运行前调度的比较
  3. CKeditor 配置使用
  4. HTML5 Canvas、内联 SVG、Canvas vs. SVG
  5. Erlang vs Java memory architecture (zz)
  6. wcf返回datatable必须给tablename赋值
  7. 电脑f2还原系统步骤_电脑一键还原win10系统的操作步骤
  8. Https 加密原理分析
  9. IDEA-jetty热加载(类文件和静态资源)
  10. 移植性问题のLPTSTR、LPCSTR、LPCTSTR、LPSTR之间的转换 转
  11. 看电影(movie):组合数
  12. java多线程通信生产者和消费者简单例子
  13. 计算机组成与设计-处理器
  14. OCR文本扫描 轮廓检测 透视变换-唐宇迪笔记
  15. 格兰杰因果检验_R实现
  16. libmodbus 封装成dll_Windows Visual Studio 2017 编译 libmodbus
  17. 程序媛:我的痘痘不让我编程
  18. 频域判断波形_股票价格频域特性
  19. 详解200行Python代码实现控制台版2048【总有一款坑适合你】【超详细】
  20. linux 下 .o 文件, .a文件,.so文件的区别

热门文章

  1. 4.平凡之路-封装帮助类和加载属性文件
  2. 实现.NET Core配置Provider之EF
  3. 使用go的ssh包快速打造一个本地命令行ssh客户端
  4. 请听一个故事------gt;百度员工离职总结:如何做个好员工
  5. 架构师2月刊发布:解读Android、高效运维、API设计方法论
  6. CCNA学习总结—OSPF协议—OSPF协议原理
  7. VMware vMotion 实时虚拟机迁移
  8. Jquery根据JSON生成Table
  9. Docker pull镜像报错问题
  10. Eclipse SVN冲突解决方案