/*
题目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的更多相关文章

  1. C语言 百炼成钢19

    /* 题目55: 有一个字符串符合以下特征(”abcdef,acccd,eeee,aaaa,e3eeeee,sssss,";),要求写一个函数(接口),输出以下结果 1) 以逗号分割字符串, ...

  2. C语言 百炼成钢8

    //题目22:两个乒乓球队进行比赛,各出三人.甲队为a,b,c三人,乙队为x,y,z三人.已抽签决定 //比赛名单.有人向队员打听比赛的名单.a说他不和x比,c说他不和x, z比,请编程序找出 //三 ...

  3. C语言 百炼成钢3

    //题目7:用*号输出空心菱形图案 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> # ...

  4. C语言 百炼成钢2

    //题目4:输入某年某月某日,判断这一天是这一年的第几天? #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<st ...

  5. C语言 百炼成钢1

    //题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> ...

  6. C语言 百炼成钢18

    //题目52:用递归打印以下图形 //* //*.*. //*..*..*.. //*...*...*...*... //*....*....*....*....*.... #include<s ...

  7. C语言 百炼成钢17

    //题目49:老师将糖果分成若干份,让学生按任意次序领取,第一个领取的,得到1份加上剩余糖果的1/10, //第二个领取的,得到2份加上剩余糖果的1/10,第三个领取的,得到3份加上剩余糖果的1/10 ...

  8. C语言 百炼成钢16

    //题目46:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只 //猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了 //一个,它同样把 ...

  9. C语言 百炼成钢15

    //题目43:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出 //圈子,问最后留下的是原来第几号的那位. #include<stdio.h> #inclu ...

随机推荐

  1. ios开发之-继承的实现运用

    // // main.m // 继承 // // #import <Foundation/Foundation.h> #import "Animal.h" #impor ...

  2. 利用JqGrid结合ashx显示列表之一

    最近项目决定运用JqGrid列表控件显示相关数据,以前接触比较多还是easyui和Ext.Net的列表控件,文章简单写的小实例进行一个总结: 1:引入相关的JS及CSS文件,JqGrid目前可以利用J ...

  3. [Elasticsearch] 向已存在的索引中加入自己定义filter/analyzer

    问题描写叙述 随着应用的不断升级,索引中的类型也会越来越多,新添加的类型中势必会使用到一些自己定义的Analyzer.可是通过_settings端点的更新API不能直接在已经存在的索引上使用. 在se ...

  4. spring AOP编程--AspectJ注解方式

    1. AOP 简介 AOP(Aspect-Oriented Programming, 面向切面编程): 是一种新的方法论, 是对传统 OOP(Object-Oriented Programming, ...

  5. Intellij IDEA 14使用maven3.3.3 问题

    Intellij IDEA 14使用maven3.3.3报错: -Dmaven.multiModuleProjectDirectory system propery is not set. Check ...

  6. ThinkPHP实现事务回滚示例代码(附加:PDO的事务处理)

    ThinkPHP的事务回滚示例如下: $m=D('YourModel');//或者是M(); $m2=D('YouModel2'); $m->startTrans();//在第一个模型里启用就可 ...

  7. js处理url

    需求:用js获得url的电话号码和状态 针对url地址:http://www.deikang.com/index.php?tel=15811296111&status=1&id=100 ...

  8. SQL Server 错误(待补充)

    1.问题:在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. 解决方法: 打开“ ...

  9. java递归算法实现拼装树形JSON数据

    有时候页面需要使用jQuery easy ui中的combotree,需要给combotree提供一个JSON数据,使用如下方法(递归)实现(下面是dao层的实现层): /** * 根据表名和父id拼 ...

  10. Huffman的应用之文件压缩与解压缩

    文件压缩与解压缩>      近期这段时间一直在学习树的这样的数据结构,也接触到了Huffman树以及了解了什仫是Huffman编码,而我们经常使用的zip压缩也是利用的Huffman编码的特性 ...