⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 util.c

📁 图书管理系统,可以查询,借书,统计借书时间日期,功能较为全面,但比较简单.
💻 C
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -