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 ...
随机推荐
- ionic的加载功能
下面是代码(黄色背景的是加载功能的代码): <html ng-app="ionicApp"> <head> <meta charset="u ...
- angularjs中ng-class的使用
1.方法一 通过数据的双向绑定(不推荐) <!DOCTYPE html> <html ng-app="myApp"> <head> <me ...
- MESI-CPU缓存一致性协议
转http://blog.csdn.net/realxie/article/details/7317630 http://en.wikipedia.org/wiki/MESI_protocol MES ...
- java.lang.IllegalArgumentException: taglib definition not consistent with specification version
web.xml报错 taglib标签错误,3.0要用jsp-config <jsp-config> <taglib> <taglib-uri>& ...
- Unicode 与UTF-8 关系
作者:邱昊宇链接:https://www.zhihu.com/question/23374078/answer/24385963来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...
- 【Linux】cp命令
用途 cp除了复制功能之外还可以建立快捷方式 全称 cp的全称为copy 参数 -a :相当于同时指定参数pdr -d :若文件为链接文件的属性(link file),则复制链接文件属性而非档案本身 ...
- LaTeX 中文段首空格问题
一般用 “\\”或者回车可以使得下一段段首空两格,但是对于第一段就不行了. 解决办法: 加一个\usepackage{indentfirst}就可以
- spring3.1之前的HandlerMapping ,HandlerAdapter以及spring3.1写法
<!--Spring3.1之前的注解 HandlerMapping --><!-- <bean class="org.springframework.web.serv ...
- jquery切换class
<ul class="nva_sele_txt" id=""> <a href="#" class= ...
- 使用vs调试.net源代码
使用.NET Framework库参考源进行调试 您可能会想知道使用.NET Framework参考源的调试方式.在下面的示例中,您将看到一个我调用公用Console.WriteLine方法的工具.从 ...