C++简单单向链表实现-创新互联
#include "pch.h" #include//创建链表 typedef struct ListTable { int nElement; //链表元素 int nSequence; //节点序号 ListTable *pNext;//下一个节点 }ListTable; //初始化链表 //参数:元素的值 ListTable* initListTable(int nNum) { //头结点 ListTable *head; //申请内存 head = (ListTable*)malloc(sizeof(ListTable)); //初始化成员变量 head->nElement = nNum; head->nSequence =1; head->pNext = NULL; //返回头结点指针 return head; } //插入元素 //参数:链表指针 元素的值 void insertElement(ListTable *list, int nNum) { //创建局部变量 ListTable *pList = list; int nCount = list->nSequence; //申请新的节点空间 ListTable *pNode = (ListTable*)malloc(sizeof(ListTable)); //遍历链表 while (pList != NULL) { //如果下一个节点为空,则插入元素 if (pList->pNext ==NULL) { pList->pNext = pNode; pNode->nSequence = nCount + 1; pNode->nElement = nNum; pNode->pNext = NULL; return; } nCount += 1; pList = pList->pNext; } } //删除指定序号元素 //参数:链表指针 元素序号 void deleteElement(ListTable *list,int nSequence) { //如果是第一个节点,直接free if (list->nSequence == nSequence) { free(list); return; } //创建局部变量 ListTable *pList = list; ListTable *pTmp=NULL; //遍历链表 while (pList!=NULL) { //如果序号相等,删除指定序号元素 if (pList->pNext->nSequence == nSequence) { pTmp = pList->pNext->pNext; free(pList->pNext); pList->pNext = pTmp; //之后的序号依次减一 while (pTmp != NULL) { pTmp->nSequence -= 1; pTmp = pTmp->pNext; } return; } pList = pList->pNext; } printf("节点不存在!\n"); } //修改元素 //参数:链表指针 元素序号 元素的值 void changeElement(ListTable *list, int nSequence,int nNum) { ListTable *pList = list; while (pList != NULL) { if (pList->nSequence == nSequence) { pList->nElement = nNum; return; } pList = pList->pNext; } printf("节点不存在!\n"); } //释放链表 //参数:链表指针 void deleteListTable(ListTable *list) { ListTable *pList = list; ListTable *pTmp=NULL; while (pList != NULL) { pTmp= pList->pNext; free(pList); pList = pTmp; } printf("释放完成!\n"); } //遍历链表元素 //参数:链表指针 void showElement(ListTable *list) { ListTable *pList = list; if (pList == NULL) { printf("链表为空!\n"); return; } while (pList != NULL) { printf("链表元素:%d 元素序号:%d\n", pList->nElement, pList->nSequence); pList = pList->pNext; } } int main() { //初始化链表 第一个元素为1 ListTable *list= initListTable(1); //插入2,3,4,5四个元素 insertElement(list, 2); insertElement(list, 3); insertElement(list, 4); insertElement(list, 5); //修改序号5的元素为6 changeElement(list, 5, 6); //删除序号为3的元素 deleteElement(list, 3); //遍历 showElement(list); //释放 deleteListTable(list); }
vs2017编译
成都创新互联公司主营福安网站建设的网络公司,主营网站建设方案,成都app软件开发,福安h5微信小程序搭建,福安网站营销推广欢迎福安等地区企业咨询另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享题目:C++简单单向链表实现-创新互联
本文地址:http://myzitong.com/article/phhip.html