zoukankan      html  css  js  c++  java
  • 反转链表

    输入一个链表的头结点,反转该链表,并返回反转后链表的头结点。

    利用三个指针来翻转,代码如下

    //翻转链表
    #include<iostream>
    using namespace std;
    struct list{
    	int data;
    	list* next;
    };
    list* create_list(void){
    	list *current=new list;
    	current->data=1;
    	current->next=NULL;
    	list *head=current;
    	for(int i=2;i<=10;i++){
    		list * p=new list;
    		p->data=i;
    		p->next=NULL;
    		current->next=p;
    		current=p;
    	}
    	return head;
    }
    list* list_reverse(list *headNode){
    	list *node=headNode;
    	list *last=NULL;              //记录前面的已经翻转好的表头
    	list *reverse_head=NULL;      //翻转后的表头
    	while(node){
    		list *link=node->next;
    		if(!link) reverse_head=node;
    		node->next=last;            //利用三个指针翻转
    		last=node;
    		node=link;
    		//cout<<last->data<<endl;
    	}
    	return  reverse_head;
    }
    void print(list *headNode){
    	while(headNode){
    		cout<<headNode->data<<" ";
    		headNode=headNode->next;
    	}
    	cout<<endl;
    }
    int main(void){
    	list *head=create_list();
    	print(head);
    	print(list_reverse(head));
    	system("pause");
    	return 0;
    }
    

  • 相关阅读:
    37.1 net-- udp传输
    37 net 网络编程
    review
    java day02 记录
    36.2 线程生命周期
    36.1 线程锁
    36 Thread 多线程
    35 编码 ASCII Unicode UTF-8 ,字符串的编码、io流的编码
    34.6 Properties(k,v存储) 和io流结合使用
    今日学习总结
  • 原文地址:https://www.cnblogs.com/aLittleBitCool/p/1959211.html
Copyright © 2011-2022 走看看