/*
题目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. 关于angularjs中路由页面强制更新的问题

    有这么一个问题,在页面内路由页面跳转时,第一次跳入路由页面时是正常的,但是第二次会记住第一次时的状态,有时候并不想这样,想强制更新这个路由页面. 有一种方式就是使用 ui-sref-opts功能,我试 ...

  2. 在linux下安装mysql

    1.下载mysql 下载地址: http://dev.mysql.com/downloads/mysql/5.5.html#downloads 2.进入系统后,检测是否安装mysql #rpm -qa ...

  3. ZOJ 3630 Information 强连通

    题意:n m表示n个节点,m条边,下面m行a b 表示a-b点有一条有向边 题目:给定有向图,删去一个点后,可以求出该图中强连通分量中最大的点数 问:删去某点后,最大点数 最小是多少 思路:枚举删点, ...

  4. Scala数据类型中的Symbol(符号文本)

    1.属于基本类型,被映射成scala.Symbol 2.当两个Symbol值相等时,指向同一个实例 3.Symbol类型存在的意义:作为不可变的字符串,同时不必重复地为相同对象创建实例,节省资源.这类 ...

  5. 〖C++〗string2int把字符串转换成int的函数

    #include <stdio.h> #include <stdlib.h> #include <string.h> int string2int(char *ar ...

  6. knockoutjs 静动态数据、行为绑定,计算属性及Sync同步更新 Value值更新事件控制

    data-bind="text: firstName"中data-bind属性是Knockout 用来显示关联UI和viewmodel的桥梁, text 表示把绑定的文本赋值给DO ...

  7. Linux下的进程间通信-详解

     详细的讲述进程间通信在这里绝对是不可能的事情,而且笔者很难有信心说自己对这一部分内容的认识达到了什么样的地步,所以在这一节的开头首先向大家推荐著 名作者Richard Stevens的著名作品:&l ...

  8. linux之进程管理详解

    |-进程管理        进程常用命令        |- w查看当前系统信息        |- ps进程查看命令        |- kill终止进程        |- 一个存放内存中的特殊目 ...

  9. node:爬虫爬取网页图片

    代码地址如下:http://www.demodashi.com/demo/13845.html 前言 周末自己在家闲着没事,刷着微信,玩着手机,发现自己的微信头像该换了,就去网上找了一下头像,看着图片 ...

  10. 大比速:remoting、WCF(http)、WCF(tcp)、WCF(RESTful)、asp.net core(RESTful) .net core 控制台程序使用依赖注入(Autofac)

    大比速:remoting.WCF(http).WCF(tcp).WCF(RESTful).asp.net core(RESTful) 近来在考虑一个服务选型,dotnet提供了众多的远程服务形式.在只 ...