#include "LinkList.h" /* 功能:插入 */ LinkList InsertNodes(LinkList pHead, char ch) { //新建结点 if ( !pHead ) return NULL; LinkNode* pTemp = GetLastNode(pHead); LinkNode* pNode = (LinkNode*)malloc(sizeof(LinkNode)); pNode->ch = ch; pNode->next = NULL; //挂接结点 pTemp->next = pNode; pTemp = pNode; return pHead; } /* 功能:获取链表长度 */ LinkNode* GetLastNode(LinkList pHead) { if ( !pHead ) return NULL; LinkNode* pTemp = pHead; while ( pTemp->next ) { pTemp = pTemp->next; } return pTemp; } /* 功能:删除nIndex位置上的结点 */ int DelNode(LinkList pHead, int nIndex) { if ( !pHead ) return 0; int nLength = GetLinkListLength(pHead); if ( nIndex < 1 || nIndex > nLength ) { return 0;//没有此结点 } LinkNode* pTemp = pHead; int nFlag = 0; LinkNode* pFront = NULL; while ( pTemp = pTemp->next ) { ++nFlag; if( nFlag == nLength && nIndex == nLength ) { if ( !pFront ) { pFront = pHead; } pFront->next = pTemp->next; free(pTemp); return 1; } if ( nIndex == nFlag ) { if ( !pFront ) { pFront = pHead; } pFront->next = pTemp->next; free(pTemp); return 1; } pFront = pTemp; } if ( nFlag >= nLength ) { return 0;//删除失败 } return 0; } /* 功能:获取链表长度 */ int GetLinkListLength(LinkList pHead) { if ( !pHead ) return 0; int nLength = 0; LinkNode* pTemp = pHead; while( pTemp = pTemp->next ) { ++nLength; } return nLength; } /* 功能:修改链表某个位置上的值 */ int ModifyNode(LinkList pHead, int nIndex, char ch) { if ( !pHead ) return 0; int nLength = GetLinkListLength(pHead); if ( nIndex < 1 || nIndex > nLength ) return 0; LinkNode* pTemp = pHead; int nFlag = 0; while ( pTemp = pTemp->next ) { ++nFlag; if ( nFlag == nLength ) { pTemp->ch = ch; return 1; } } return 0; } /* 功能:查找字符ch在链表中第一次出现的位置 */ int FindLinkList(LinkList pHead, char ch) { if ( !pHead ) return 0; LinkNode* pNode = pHead; int nFlag = 0; while ( pNode = pNode->next ) { if ( ch == pNode->ch ) return ++nFlag; ++nFlag; } if ( nFlag >= GetLinkListLength(pHead) ) { return 0; } return 0; } /* 功能:打印 */ void PrintLinkList(LinkList pHead) { if ( !pHead ) return; LinkNode* pTemp = pHead; while ( pTemp = pTemp->next ) { printf("%c", pTemp->ch); } printf("/n"); } /* 功能:释放内存 */ void Release(LinkList pHead) { //释放内存 LinkNode* pTemp = pHead; while ( pTemp = pHead->next ) { pHead = pTemp->next; free(pTemp); pTemp = NULL; } }