// Prime C.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<iostream>
using namespace std;
typedef struct Link
{
int ia;
struct Link* next;
}LinkNode;
LinkNode* InlitializeLink(int a[] , int n)
{
int i = 0;
LinkNode* head = new LinkNode;
head->ia = a[i];
head->next = NULL;
LinkNode* p = head;
for (int i = 1; i < n; i++)
{
LinkNode* q = new LinkNode;
q->ia = a[i];
q->next = NULL;
p->next = q;
p = q;
}
return head;
}
void OutPutLink(LinkNode* head)
{
LinkNode* p = head;
LinkNode* q = p;
while(NULL != p)
{
cout<<p->ia<<"---->";
q = p;
p = p->next;
delete q;
}
}
int SearchNode(LinkNode* head, int k)
{
LinkNode* p = head;
LinkNode* q = head;
int i = 1;
while(i<k)
{
p = p->next;
i++;
}
while(NULL != p ->next)
{
p = p->next;
q = q->next;
}
return q->ia;
}
LinkNode* ReversionLink(LinkNode* head)
{
LinkNode* pre = head;
LinkNode* cur = head->next;
LinkNode* ne = NULL;
while(NULL != cur)
{
ne = cur->next;
cur->next = pre;
pre = cur;
cur = ne;
}
head->next = NULL;
return pre;
}
int _tmain(int argc, _TCHAR* argv[])
{
int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
LinkNode*head = InlitializeLink(a, 10);
if (NULL != head)
{
int m = SearchNode(head, 3);
cout<<m<<endl;
head = ReversionLink(head);
OutPutLink(head);
}
system("pause");
return 0;
}