C 关于链表的一些操作
今年暑假正式开始我的数据结构学习之旅,虽然之前学过一遍了,但是感觉完全是应付考试,没有认真学
所以,今年打算从头到尾正式学习一遍,每天持续更新学习成果。今天重温了一下链表,分享。
#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 关于链表的一些操作相关推荐
- 链表的各种操作实现 链表逆序 链表排序 有序链表归并 链表存在环的判定
链表的各种操作实现 链表逆序 链表排序 有序链表归并 链表存在环的判定 链表基本操作实现 c语言版本, 该程序在visual c++ 6.0上调试通过! 本人写该程序完全是为学习交流之用,还望大家多多 ...
- java 结构体_Java实现单链表的简单操作
文章目录 前言 一.基本实现思路 二.代码实现 1.定义结点类2.定义链表类3.测试调用4.结果 总结 前言 用Java实现单链表的简单操作,阅读本文和上一篇文章体会Java中类与C++中结构体指针的 ...
- 数据结构(单链表的相关操作)
为什么80%的码农都做不了架构师?>>> #include <stdio.h> #include <stdlib.h> #define ElemType ...
- C++中链表的一些操作
//C++中链表的一些操作,VS2005下调试通过. #include <Windows.h> #include <iostream> using namespace std; ...
- 单链表的实现操作(C语言)
//单链表的实现操作 #include <stdio.h> #include <malloc.h> #include <stdlib.h> //数据类型定义 typ ...
- 链表的常见操作(转)
链表的常见操作 链表是数据结构的重要内容,在计算机程序中应用广泛,同时也是各公司笔试题目的重点. 以下简单实现了链表的一些操作,包括创建.增加节点.删除节点.单链表逆置.合并有序链表等. 一.链表创建 ...
- 单链表的简单操作与演示
单链表的简单操作与演示 单链表 单链表概念和简单的设计 单链表是一种链式存取的数据结构,链表中的数据是以结点来表示的,每个结点由元素和指针构成. 元素表示数据元素的映象,就是存储数据的存储单元:指针指 ...
- python3实现链表的基础操作
python3实现链表的基础操作 实现的步骤: 一.建立链表模型 二.遍 历 链 表 三.获取链表长度 四.追 加 节 点 五.插 入 操 作 六.主 调 函 数 分析: (1)建立链表模型: 首先我 ...
- SWUSTOJ #953 单链表的删除操作的实现
SWUSTOJ #953 单链表的删除操作的实现 题目 输入 输出 样例输入 样例输出 源代码 题目 建立长度为 n 的单链表,删除第 i 个结点之前的结点. 输入 第一行为自然数 n,表示链式线性表 ...
- 数据结构单链表的基础操作(C语言)
效果如图: 代码及详情如下:(文末总结) 目录 //主函数 //菜单 //创建链表 //插入结点 //删除结点 //查找结点 //链表长度 //打印链表 //清空链表 //逆置链表 //删除偶数元素结 ...
最新文章
- PL/SQL ——分页编程
- 优先级调度和运行前调度的比较
- CKeditor 配置使用
- HTML5 Canvas、内联 SVG、Canvas vs. SVG
- Erlang vs Java memory architecture (zz)
- wcf返回datatable必须给tablename赋值
- 电脑f2还原系统步骤_电脑一键还原win10系统的操作步骤
- Https 加密原理分析
- IDEA-jetty热加载(类文件和静态资源)
- 移植性问题のLPTSTR、LPCSTR、LPCTSTR、LPSTR之间的转换 转
- 看电影(movie):组合数
- java多线程通信生产者和消费者简单例子
- 计算机组成与设计-处理器
- OCR文本扫描 轮廓检测 透视变换-唐宇迪笔记
- 格兰杰因果检验_R实现
- libmodbus 封装成dll_Windows Visual Studio 2017 编译 libmodbus
- 程序媛:我的痘痘不让我编程
- 频域判断波形_股票价格频域特性
- 详解200行Python代码实现控制台版2048【总有一款坑适合你】【超详细】
- linux 下 .o 文件, .a文件,.so文件的区别