C语言 百炼成钢23
/*
题目59:链表如下
typedef struct _LinkList
{
int data;
struct _LinkList*next;
} LinkList;
有如下结点数据域 1 2 3 4 5 6 7 8 12 19 。。。。
要求1:创建链表
要求2:删除结点值为偶数的结点 ;70分
要求3:编写测试用例 30分
*/ #include<stdio.h>
#include<stdlib.h>
#include<string.h> typedef struct _linklist{
int data;
struct _linklist *pnext;
}LinkList; //初始化链表头结点
int InitLink(LinkList **pout/*out*/){
int ERRO_MSG = ;
if (pout==NULL)
{
ERRO_MSG = ;
printf("pout==NULL erro msg:%d\n", ERRO_MSG);
return ERRO_MSG;
}
LinkList * phead = (LinkList *)malloc(sizeof(LinkList));
if (phead==NULL)
{
ERRO_MSG = ;
printf("分配内存失败 erro msg:%d\n", ERRO_MSG);
return ERRO_MSG;
}
phead->data = ;
phead->pnext = NULL;
*pout = phead;
return ERRO_MSG;
} //创建链表节点
int CreateLink(LinkList *pin/*in*/,int data){
int ERRO_MSG = ;
if (pin==NULL)
{
ERRO_MSG = ;
printf("pin==NULL erro msg:%d\n", ERRO_MSG);
return ERRO_MSG;
}
LinkList *pHead = pin;
LinkList *pCurrent = pHead->pnext;
//创建新节点
LinkList *pMalloc = (LinkList *)malloc(sizeof(LinkList));
pMalloc->data = data;
pMalloc->pnext = NULL;
if (pCurrent==NULL)
{
pHead->pnext = pMalloc;
return ERRO_MSG;
}
//遍历到链表节点末尾位置
while (pCurrent->pnext){
pCurrent = pCurrent->pnext;
}
pCurrent->pnext = pMalloc;
return ERRO_MSG;
} //删除结点值为偶数的结点
int DelLink(LinkList *pin/*in*/){
int ERRO_MSG = ;
if (pin == NULL)
{
ERRO_MSG = ;
printf("pin==NULL erro msg:%d\n", ERRO_MSG);
return ERRO_MSG;
}
LinkList *pHead = pin;
LinkList *pCurrent = pHead->pnext;
LinkList * pPrior = pHead;
while (pCurrent){
if (pCurrent->data%==)
{
pPrior->pnext = pCurrent->pnext;
//释放这个节点
free(pCurrent);
pCurrent = NULL;
pCurrent = pPrior->pnext;
}
else{
pPrior = pCurrent;
pCurrent = pCurrent->pnext;
}
}
return ERRO_MSG;
} //打印链表
void PrintfA(LinkList *pin/*in*/){
if (pin==NULL)
{
printf("链表不可以为空!\n");
}
LinkList *pHead = pin;
LinkList *pCurrent = pHead->pnext;
while (pCurrent){
printf("%d\n", pCurrent->data);
pCurrent = pCurrent->pnext;
}
} //释放链表
int FreeLink(LinkList **pin/*in*/){
int ERRO_MSG = ;
if (pin==NULL)
{
ERRO_MSG = ;
printf("pin==NULL erro msg:%d\n", ERRO_MSG);
return ERRO_MSG;
}
LinkList *pHead = *pin;
LinkList *pCurrent = pHead->pnext;
LinkList *pPrior = pHead;
while (pCurrent){
pPrior->pnext = pCurrent->pnext;
//释放内存
if (pCurrent)
{
free(pCurrent);
pCurrent = NULL;
}
pCurrent = pPrior->pnext;
}
if (pHead)
{
free(pHead);
pHead = NULL;
}
return ERRO_MSG;
} void main(){
int i = ,ret=;
//初始化链表头结点
LinkList *pHead = NULL;
//初始化头结点
InitLink(&pHead);
//创建节点
for (i = ; i < ; i++)
{
ret=CreateLink(pHead, i + );
if (ret!=)
{
printf("创建链表节点报错!\n");
//释放所有链表节点
goto END;
}
}
//打印所有节点
PrintfA(pHead);
//删除部分节点
ret=DelLink(pHead);
if (ret!=)
{
printf("删除偶数节点报错!\n");
//释放所有链表节点
goto END;
}
//打印所有节点
PrintfA(pHead);
END:
//释放所有节点
FreeLink(&pHead);
system("pause");
}

C语言 百炼成钢23的更多相关文章
- C语言 百炼成钢19
/* 题目55: 有一个字符串符合以下特征(”abcdef,acccd,eeee,aaaa,e3eeeee,sssss,";),要求写一个函数(接口),输出以下结果 1) 以逗号分割字符串, ...
- C语言 百炼成钢8
//题目22:两个乒乓球队进行比赛,各出三人.甲队为a,b,c三人,乙队为x,y,z三人.已抽签决定 //比赛名单.有人向队员打听比赛的名单.a说他不和x比,c说他不和x, z比,请编程序找出 //三 ...
- C语言 百炼成钢3
//题目7:用*号输出空心菱形图案 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> # ...
- C语言 百炼成钢2
//题目4:输入某年某月某日,判断这一天是这一年的第几天? #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<st ...
- C语言 百炼成钢1
//题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> ...
- C语言 百炼成钢18
//题目52:用递归打印以下图形 //* //*.*. //*..*..*.. //*...*...*...*... //*....*....*....*....*.... #include<s ...
- C语言 百炼成钢17
//题目49:老师将糖果分成若干份,让学生按任意次序领取,第一个领取的,得到1份加上剩余糖果的1/10, //第二个领取的,得到2份加上剩余糖果的1/10,第三个领取的,得到3份加上剩余糖果的1/10 ...
- C语言 百炼成钢16
//题目46:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只 //猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了 //一个,它同样把 ...
- C语言 百炼成钢15
//题目43:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出 //圈子,问最后留下的是原来第几号的那位. #include<stdio.h> #inclu ...
随机推荐
- ios开发之-继承的实现运用
// // main.m // 继承 // // #import <Foundation/Foundation.h> #import "Animal.h" #impor ...
- 利用JqGrid结合ashx显示列表之一
最近项目决定运用JqGrid列表控件显示相关数据,以前接触比较多还是easyui和Ext.Net的列表控件,文章简单写的小实例进行一个总结: 1:引入相关的JS及CSS文件,JqGrid目前可以利用J ...
- [Elasticsearch] 向已存在的索引中加入自己定义filter/analyzer
问题描写叙述 随着应用的不断升级,索引中的类型也会越来越多,新添加的类型中势必会使用到一些自己定义的Analyzer.可是通过_settings端点的更新API不能直接在已经存在的索引上使用. 在se ...
- spring AOP编程--AspectJ注解方式
1. AOP 简介 AOP(Aspect-Oriented Programming, 面向切面编程): 是一种新的方法论, 是对传统 OOP(Object-Oriented Programming, ...
- Intellij IDEA 14使用maven3.3.3 问题
Intellij IDEA 14使用maven3.3.3报错: -Dmaven.multiModuleProjectDirectory system propery is not set. Check ...
- ThinkPHP实现事务回滚示例代码(附加:PDO的事务处理)
ThinkPHP的事务回滚示例如下: $m=D('YourModel');//或者是M(); $m2=D('YouModel2'); $m->startTrans();//在第一个模型里启用就可 ...
- js处理url
需求:用js获得url的电话号码和状态 针对url地址:http://www.deikang.com/index.php?tel=15811296111&status=1&id=100 ...
- SQL Server 错误(待补充)
1.问题:在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. 解决方法: 打开“ ...
- java递归算法实现拼装树形JSON数据
有时候页面需要使用jQuery easy ui中的combotree,需要给combotree提供一个JSON数据,使用如下方法(递归)实现(下面是dao层的实现层): /** * 根据表名和父id拼 ...
- Huffman的应用之文件压缩与解压缩
文件压缩与解压缩> 近期这段时间一直在学习树的这样的数据结构,也接触到了Huffman树以及了解了什仫是Huffman编码,而我们经常使用的zip压缩也是利用的Huffman编码的特性 ...