首页 技术 正文
技术 2022年11月14日
0 收藏 482 点赞 2,650 浏览 2357 个字
/*
题目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

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,488
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,903
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,736
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,487
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,127
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,289