util.c

来自「图书管理系统,可以查询,借书,统计借书时间日期,功能较为全面,但比较简单.」· C语言 代码 · 共 123 行

C
123
字号
#include "myStd.h"
#include "util.h"

ListNode* ListAddTail(ListNode* pList, DATATYPE* pData, int nMemLen)
{
	if(pList!=NULL)
	{
		ListNode* pNewNode = (ListNode*)malloc(sizeof(ListNode));
		ListNode* pTmp = pList;

		DATATYPE* pNew = (DATATYPE*)malloc(nMemLen);
		memcpy(pNew, pData, nMemLen);

		pNewNode->pData = pNew;
		pNewNode->pNext = NULL;
		pNewNode->pPrev = NULL;

		while (pTmp->pNext != NULL)
		{
			pTmp = pTmp->pNext;
		}
		
		pNewNode->pPrev = pTmp;
		pTmp->pNext = pNewNode;
		return pNewNode;
	}
	return NULL;
}

ListNode* ListAddHead(ListNode* pList, DATATYPE* pData, int nMemLen)
{
	if(pList!=NULL)
	{
		ListNode* pNewNode = (ListNode*)malloc(sizeof(ListNode));
		ListNode* pTmp = pList;

		DATATYPE* pNew = (DATATYPE*)malloc(nMemLen);
		memcpy(pNew, pData, nMemLen);

		pNewNode->pData = pNew;
		pNewNode->pNext = NULL;
		pNewNode->pPrev = NULL;
		
		while (pTmp->pPrev != NULL)
		{
			pTmp = pTmp->pPrev;
		}
		
		pNewNode->pNext = pTmp;
		pTmp->pPrev = pNewNode;
		return pNewNode;
	}

	return NULL;
}

ListNode* ListGenerate(DATATYPE* pData, int nMemLen)
{
	ListNode* pNewNode = (ListNode*)malloc(sizeof(ListNode));
	
	DATATYPE* pNew = (DATATYPE*)malloc(nMemLen);
	memcpy(pNew, pData, nMemLen);

	pNewNode->pData = pNew;
	pNewNode->pNext = NULL;
	pNewNode->pPrev = NULL;

	return pNewNode;
}

ListNode* ListDeleteNode(ListNode* pList, DATATYPE* pData, int nMemLen)
{
	ListNode* pRet = NULL;
	if(pData != NULL)
	{
		
		ListNode* pTmp = pList;
		while (pTmp != NULL)
		{
			if(pTmp->pData == pData)
			{
				if(pTmp->pPrev == NULL)
				{
					if(pTmp->pNext != NULL)
					{
						pTmp->pNext->pPrev = NULL;	
					}
					
					pRet = pTmp->pNext;
				}
				else if(pTmp->pNext == NULL)
				{
					pTmp->pPrev->pNext = NULL;
					pRet = pList;
				}
				else
				{
					pTmp->pPrev->pNext = pTmp->pNext;
					pTmp->pNext->pPrev = pTmp->pPrev;
					pRet = pList;
				}
				
				break;
			}
			
			pTmp = pTmp->pNext;
		}

		if((pTmp != NULL)&&(pTmp->pData == pData))
		{
			free(pData);
			free(pTmp);
		}
	}
	else
	{
		pRet = pList;
	}

	return pRet;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?