#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct node{
char val;
struct node* pNext;
}Node;
Node* CreateList(int n);
void Traverslist(Node* pHead);
Node* TransNeighbor(Node* pHead);
int main(){
Node* pHead = CreateList(7);
printf("before transform\n");
Traverslist(pHead);
TransNeighbor(pHead);
printf("\nafter transform\n");
Traverslist(pHead);
getchar();
return 1;
}
//创建新链表
Node* CreateList(int n){
Node* pHead = (Node*)malloc(sizeof(Node));
Node* pTail = pHead;
pTail->pNext=NULL;
int i;
for(i=0; i < n; i++){
Node* pNew = (Node*)malloc(sizeof(Node));
pNew->val = 'a'+i;
pTail->pNext = pNew;
pNew->pNext = NULL;
pTail = pNew;
}
return pHead;
}
int Length(Node *p)
{ int sum=0;
while(p)
{
p=p->pNext;
sum++;
}
return sum;
}
void Traverslist(Node* pHead){
Node* p = pHead->pNext;
int isFirst = 0;
while(p!= NULL)
{
if(isFirst==0)
{
printf("%c",p->val);
isFirst=1;
}else{
printf("->%c",p->val);
}
p = p->pNext;
}
}
Node* TransNeighbor(Node* pHead){
Node* p = pHead->pNext;
int Length1=Length(p);
if(Length1&1){ //even
while(p->pNext!=NULL && p->pNext->pNext!=NULL)
{
char value = p->val;
p->val=p->pNext->val;
p->pNext->val=value;
p=p->pNext->pNext;
}
}
else //odd 1 2 3 4 ---4 3 2 1
{
while(p)
{
char value1 = p->val;
p->val=p->pNext->val;
p->pNext->val=value1;
p=p->pNext->pNext;
}
}
return pHead;
}
#include <stdlib.h>
#include <malloc.h>
typedef struct node{
char val;
struct node* pNext;
}Node;
Node* CreateList(int n);
void Traverslist(Node* pHead);
Node* TransNeighbor(Node* pHead);
int main(){
Node* pHead = CreateList(7);
printf("before transform\n");
Traverslist(pHead);
TransNeighbor(pHead);
printf("\nafter transform\n");
Traverslist(pHead);
getchar();
return 1;
}
//创建新链表
Node* CreateList(int n){
Node* pHead = (Node*)malloc(sizeof(Node));
Node* pTail = pHead;
pTail->pNext=NULL;
int i;
for(i=0; i < n; i++){
Node* pNew = (Node*)malloc(sizeof(Node));
pNew->val = 'a'+i;
pTail->pNext = pNew;
pNew->pNext = NULL;
pTail = pNew;
}
return pHead;
}
int Length(Node *p)
{ int sum=0;
while(p)
{
p=p->pNext;
sum++;
}
return sum;
}
void Traverslist(Node* pHead){
Node* p = pHead->pNext;
int isFirst = 0;
while(p!= NULL)
{
if(isFirst==0)
{
printf("%c",p->val);
isFirst=1;
}else{
printf("->%c",p->val);
}
p = p->pNext;
}
}
Node* TransNeighbor(Node* pHead){
Node* p = pHead->pNext;
int Length1=Length(p);
if(Length1&1){ //even
while(p->pNext!=NULL && p->pNext->pNext!=NULL)
{
char value = p->val;
p->val=p->pNext->val;
p->pNext->val=value;
p=p->pNext->pNext;
}
}
else //odd 1 2 3 4 ---4 3 2 1
{
while(p)
{
char value1 = p->val;
p->val=p->pNext->val;
p->pNext->val=value1;
p=p->pNext->pNext;
}
}
return pHead;
}