链表的简单操作-----删除,添加,查找(Xcode)
#include <stdio.h>
#include "shou_note.h"
struct student *create() /*这个括号是什么意思?*/
{
//创建 头指针 尾指针 新指针
struct student *phead=NULL;
struct student *pend =NULL;
struct student *pnew =NULL;
int i=0; //循环变量
//建立链表及第一个结点
//因为第一个结点是头结点,所以要放在循环外面处理
pnew=(struct student*)malloc(sizeof(struct student));
scanf("%s%d",phead->name,phead->age);
phead=pnew=pend;/*现在只有一个结点,同时为三个结点*/
//建立后面三个结点
for(i=1;i<4;i++){
pnew=(struct student*)malloc(sizeof(struct student));
scanf("%s%d",phead->name,phead->age);
pend->next=pnew;
pend=pnew;
}
pend->next=NULL;
return phead;
}
//输出结点
void print(struct student *phead){
struct student *p; //建立临时指针
p=phead; //便临时指向头结点
while (p!=NULL) {
printf("姓名:%s 年龄:%d\n",p->name,p->age);
p=p->next;
}
}
//函数:void del 删除指定姓名结点
//参数:struct student *phead,char *name
//返回值:void
void del(struct student *phead,char *name){
//为了简化程序,本函数有一个缺陷:无法删除第一个结点
struct student *pfront=NULL;
struct student *pback =NULL;
pback=phead;
pfront=pback->next;
while (pfront!=NULL) {
if (strcmp(name, pfront->name)==0) //找到名字开始删除
{
//下面进行pfront指向的函数进行删除
pback->next=pfront->next;
free(pfront);
return;
}
pback=pfront;
pfront=pfront->next;
}
printf("要删除的名字未找到.");
}
//插入一个结点在指定姓名之前
void insert(struct student *phead,char *name){
//为了简化结点,本函数有一个缺陷,无法在第一个函数之前插入节点.
struct student *pfront=NULL;
struct student *pback =NULL;
struct student *pnew =NULL;
//前结点 后结点 新结点
//与删除操作不同的是插入结点要插入新的结点
printf("请输入新节点的姓名和年龄:\n");
scanf("%s%d",pnew->name,pnew->age);
pback=phead; //后结点指向头结点
pfront=phead->next; //前结点指向头结点的下一个节点
while (pfront!=NULL) {
if (strcmp(name, pfront->name)==0)//找到名字,开始插入
{
pback->next=pnew; //使后结点的下一结点指向新结点
pnew->next=pfront; //新结点的下一节点指向前结点
return;
}
pback=pfront; //后结点设为前结点
pfront=pfront->next; //前结点又指向下一结点使前后结点始终保留一个空隙
}
//如果未找到要插入的结点,将新结点插在链表的最后一个
pback->next=pnew;
pnew->next=NULL;
}
#include <stdio.h>
#include "shou_note.h"
#include "shou_note.c"
int main(int argc, const char * argv[]) {
struct student *phead=NULL; //链表头指针
phead=create(); //创建结点
print(phead); //输出所有结点
del(phead, "cc"); //删除名为cc的结点
printf("删除节点后的情况:");
print(phead);
insert(phead,"dd"); //在名为dd结点之前插入一个新结点
printf("插入节点后的借点情况:");
print(phead);
return 0;
}
转载于:https://www.cnblogs.com/absorption/p/5384162.html
链表的简单操作-----删除,添加,查找(Xcode)相关推荐
- 单链表的简单操作与演示
单链表的简单操作与演示 单链表 单链表概念和简单的设计 单链表是一种链式存取的数据结构,链表中的数据是以结点来表示的,每个结点由元素和指针构成. 元素表示数据元素的映象,就是存储数据的存储单元:指针指 ...
- java 结构体_Java实现单链表的简单操作
文章目录 前言 一.基本实现思路 二.代码实现 1.定义结点类2.定义链表类3.测试调用4.结果 总结 前言 用Java实现单链表的简单操作,阅读本文和上一篇文章体会Java中类与C++中结构体指针的 ...
- java对mysql的简单操作——删除数据
java连接mysql5.1教程(含代码)+ 查询数据 相关文章推荐: java对mysql的简单操作--增加数据 下面是数据删除片段的代码 Connection conn = null; State ...
- java对mysql的简单操作的综合运用——登录+注册+修改密码
本篇博客是java对mysql的简单操作的综合运用--登录系统.java对mysql的简单操作的综合运用--注册系统.java对mysql的简单操作的综合运用--修改密码系统的整合. 因为使用的是数据 ...
- java对mysql的简单操作——增删改查的总结
增删改查的详细内容可以点击以下链接: java对mysql的简单操作--增加数据 java对mysql的简单操作--删除数据 java对mysql的简单操作--修改数据 java连接mysql5.1教 ...
- java对mysql的简单操作——增加数据
java连接mysql5.1教程(含代码)+ 查询数据 下面是数据添加片段的代码 Connection conn = null; Statement stmt = null; PreparedStat ...
- 数据结构:带头双向循环链表——增加、删除、查找、修改,详细解析
读者可以先阅读这一篇:数据结构--单链表的增加.删除.查找.修改,详细解析_昵称就是昵称吧的博客-CSDN博客,可以更好的理解带头双向循环链表. 目录 一.带头双向循环链表的处理和介绍 1.带头双向循 ...
- (C++版)链表(四)——实现双向循环链表创建、插入、删除等简单操作
http://blog.csdn.net/fisherwan/article/details/25649271 链表(四)实现双向循环链表简单操作,代码如下: [cpp] view plain cop ...
- (C语言版)链表(二)——实现单向循环链表创建、插入、删除、释放内存等简单操作
http://blog.csdn.net/fisherwan/article/details/19754585 昨天写了单向链表的代码,今天上午把单向循环链表的程序给敲完了.链表的相关操作一样的,包含 ...
最新文章
- 用好idea这几款插件,可以帮你少写30%的代码!
- AIX HA模拟宕机--维护磁带机
- 情境感知技术是什么?
- Unknown: Failed to get convolution algorithm. This is probably because cuDNN
- Hadoop学习之Hadoop集群的定制配置(一)
- Hypersonic SQL开源数据库方向比较流行的纯Java开发的关系型数据库
- Cortex系列ARM内核介绍
- 考研计算机专业课统考吗,09考研计算机专业课统考增至4部分内容
- DFS应用——遍历无向图
- The Model Driven Software Network
- android七牛云存储,Android上传图片到七牛云
- android 检查 write_external_storage,android – 如何知道何时需要WRITE_EXTERNAL_STORAGE
- 商业信息敏感、安全处理(口令、数字证书-U盾-密保卡、指纹识别-虹膜识别)...
- 学JAVA第十三天,方法、方法重载及构造函数
- 剑指offer——11.旋转数组的最小数字
- 致经典初选的60首备选篇目_致经典复选诵读题库:英诗选篇学前及小学段60首...
- Android adb命令开启飞行模式,开启wifi,开启移动数据等相关操作
- mac上安装R和RStudio
- CAD看图软件怎么快速进行对图纸的打印?
- 让男生成熟的十部电影zt
热门文章
- [LeetCode]:116:Populating Next Right Pointers in Each Node
- android smartbar适配
- Debenham养老金项目关键流程1-员工分类流程
- JA-SIG(CAS)学习笔记1
- MATLAB学习笔记(九)
- linux rpm找不到命令_linux书后习题(4-9章不全) - lijinli
- java返回链表的中间结点_876. 链表的中间结点
- static在内存层面的作用_C++内存管理笔记
- oracle delete远程表,用脚本实现表的远程准实时同步
- Java 算法 矩阵乘法