/********************
 
    WZ  ASUST  2016
代码与反思
 
 ********************/
#include<iostream>
#include<assert.h>
#include<vector>//容器--类模板
#include<stdlib.h>//利用随机值
#include<time.h>
using namespace std;
 
#define N 1000 
#define K 100
 typedef struct node
{
    int x;
     
    node *next;
public:
    node():x(1) ,next(NULL){}
    node(int a):x(a), next(NULL){}
}node;
int xx[]={0,7,6,5,4,3,2,1,0};int i=0; 
void  linkcreat(node*head)
{
if(head==NULL)
{
  head=new node;
}
head->x=xx[i++];
while(i<8)
{
node *add=new node(xx[i++]);
add->next=head->next;
head->next=add;
}
}
void show(node *head)
{
node *p=head;
 while(p)
{
cout<<p->x<<" ";
p=p->next;
}
cout<<endl;
} 
 
void V(node *&head) 
{ 
 node *newhead=head;
node *p=head;
node *q=head;
node *t = NULL;
  while(p->next!=NULL)
  {
     q=p;
     p=p->next;
     q->next=t;
     t=q;
   
   }
 head=p;
 p->next=q;
 
}
void V(node *&head,int k)  
{ 
node *newhead=head;
node *p=head;
node *q=head;
node *t = NULL;
  while(k--)
  {
     q=p;
     p=p->next;
     q->next=t;
     t=q;
   }
cout<<q->next->x<<endl;
 head=q;
 newhead->next=p;
  
}


int main()
{
	 node *head=new node(1);
      linkcreat(head); 
         show(head);
       V(head,4);
     show(head);  
}
/*********************
博客 作为文件中转站 与记忆的留存
这里也许有错误 大多的程序仅仅实现基本功能
发表的时候 有些是知道错误的
程序员的乐趣在于自己能写一些代码得到反馈
部分错误留下了 在后续的博客引用中可以注明
链表那节  函数名与功能不匹配  反转是错误的 上面已经给出正确解
对于前关于数组匹配  也是错的 项目运用的时候已更改
也就是测试数据很重要

*********************/