choupiaoyi 2020-05-18
#include "list.h" // 1、创建头结点 Node * CreateHeadeNode(void) { Node *pHead = (Node *)malloc(sizeof(Node)); pHead->m_pNext = NULL; return pHead; } // 2、创建新结点 Node * CreateNewNode(DATA data) { Node *pNew = (Node *)malloc(sizeof(Node)); pNew->m_pNext = NULL; pNew->data = data; return pNew; } // 3、头插入法插入节点 void InsertNodeByHead(Node *pHead, DATA data) { Node *pNew = CreateNewNode(data); pNew->m_pNext = pHead->m_pNext; pHead->m_pNext = pNew; } // 4、删除结点 void RemoveNodeByData(Node *pHead, DATA data) { Node *pCurNode = pHead->m_pNext; Node *pPreNode = pHead; while (pCurNode != NULL && pCurNode->data != data) { pPreNode = pCurNode; pCurNode = pPreNode->m_pNext; } if (pCurNode == NULL) return; pPreNode->m_pNext = pCurNode->m_pNext; free(pCurNode); pCurNode = NULL; } // 5、通过数据查找结点 // 返回NULL表示没有找到 // 非NULL表示找到 Node * SearchNodeByData(Node *pHead, DATA data) { Node *p = pHead->m_pNext; while (p != NULL && p->data != data) { p = p->m_pNext; } return p; }
#ifndef __LIST_H__ #define __LIST_H__ #include <stdio.h> /* 定义数据类型 */ typedef int DATA; typedef struct _Node_ { DATA data; struct _Node_ *m_pNext; }Node; /* 函数声明区域 */ Node * CreateHeadeNode(void); // 创建头结点 Node * CreateNewNode(DATA data); // 创建新结点 void InsertNodeByHead(Node *pHead, DATA data); // 插入一个结点 void RemoveNodeByData(Node *pHead, DATA data); // 删除一个结点 Node * SearchNodeByData(Node *pHead, DATA data); // 查找一个结点 void ListAllNode(Node *pHead); // 打印链表数据 #endif /* __LIST_H__ */