本文主要是介绍C 链表中从第s节点到第e节点的逆置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
//结构体
typedef struct Node {ElementType data;struct Node * next;
} LNode, * LinkNode;//逆置从i到m个节点的串
Status reversFromstoe(LinkNode *L, int s, int e){if(!(*L)->next)return ERR;LinkNode p1 = (*L);//要逆置的话,首先要找出第s个结点的前驱,和第s个结点,以及第e个结点LinkNode SNode = NULL, ENode = NULL, PreSNode = NULL;int n = 0;while (p1->next) {//先找到第s个节点的前驱节点if(n == s-1){PreSNode = p1;SNode = PreSNode->next;}//然后再找到第e个节点,找到之时即为跳出之日else if(n == e){ENode = p1;break;}p1 = p1->next;n++;}//再次确认下是不是真的找到了if(!SNode || !ENode){return ERR;}//将原来链表中的第s-1个节点和第e+1个节点相连PreSNode->next = ENode->next;//独立出来的子串就是SNode到ENode了ENode->next = NULL;//遍历独立出来的子串,将其按头插法插入到原来第s-1个节点后面while (SNode) {//准备工作LinkNode Temp = SNode;SNode = SNode->next;//头插法Temp->next = PreSNode->next;PreSNode->next = Temp;}return OK;
}
这篇关于C 链表中从第s节点到第e节点的逆置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!