zoukankan      html  css  js  c++  java
  • 链表的部分翻转

    #include <iostream>
    #include <vector>
    #include <string>
    
    using namespace std;
    
    typedef struct tagSNode
    {
    	int value;
    	tagSNode* pNext;
    
    	tagSNode(int x) :value(x), pNext(NULL){};
    }SNode;
    void Print(SNode* p)
    {
    	while (p!=NULL)
    	{
    		if (p->pNext == NULL)
    		{
    			printf("%d", p->value);
    			
    		}
    		else
    		{	
    			printf("%d->", p->value);
    			
    		}
    		p = p->pNext;
    		
    	}
    	printf("
    ");
    }
    
    SNode* Tranverse(SNode* pHead,int m,int n)
    {
    	SNode* pLink = pHead;
    	int i;
    	for (i=0; i < m-1; i++)
    	{
    		pLink= pLink->pNext;
    	}
    
    	SNode* pPre = pLink->pNext;
    	SNode* pCur = pPre;
    	SNode* pNext;//关键在于pNext暂时存放后面的部分,不至于被翻转搅乱。而且翻转过程用到了四个节点指针。
    
    	
    	for (i=0; i < n-m+1; i++)
    	{
    		pNext = pCur->pNext;
    		pCur->pNext = pLink->pNext;
    		pLink->pNext = pCur;
    		pPre->pNext = pNext;
    		pCur = pNext;
    
    	}
    	return pHead;
    
    
    }
    int main()
    {
    	SNode* pHead1 = new SNode(0);
    	int i;
    	for (i = 10; i >0; i--)
    	{
    		SNode* p = new SNode(i);
    		p->pNext = pHead1->pNext;
    		pHead1->pNext = p;
    	
    	}
    	Print(pHead1);
    
    	Tranverse(pHead1,4,8);
    
    	Print(pHead1);
    	
    
    	
    }

  • 相关阅读:
    PHP创建socket服务
    linux配置PS1
    几个常用的linux命令
    MongoDB的分片集群搭建
    django-admin 配置
    django使用mysql数据库
    Django知识
    docker 监控之 cadvisor
    shell 拾遗
    shell 基数数值方法
  • 原文地址:https://www.cnblogs.com/muyangshaonian/p/9650544.html
Copyright © 2011-2022 走看看