#include <iostream>
using namespace std;
typedef char DataType; //分号
struct LinkNode{
DataType data;
LinkNode* next;
};
void PrintLinkList(const LinkNode* l);
LinkNode* InitLinkList(DataType dataArray[],size_t size);//表尾插入方式新建一个链表
LinkNode* ReverseLinkList(LinkNode* l);
void PrintLinkList(const LinkNode* l){
const LinkNode* temp=l; //const
if(temp!=NULL)
{
/* temp=temp->next; //========================== */
while(temp!=NULL){
cout<<"-"<<temp->data;
temp=temp->next;
}
cout<<endl;
}
}
LinkNode* InitLinkList(DataType dataArray[],size_t size){
if( dataArray==NULL) return NULL;
LinkNode* head=(LinkNode*)malloc(sizeof(LinkNode));
if(head!=NULL)
{
LinkNode* tempNode1=(LinkNode*)malloc(sizeof(LinkNode));
if(tempNode1)
{
head->data='#';
head->next=tempNode1;
tempNode1->data=dataArray[0];
tempNode1->next=NULL;
LinkNode* tempNode2=NULL;
for(int i=1;i<size;i++)
{
tempNode2=(LinkNode*)malloc(sizeof(LinkNode));
tempNode2->data=dataArray[i];
tempNode2->next=NULL;
tempNode1->next=tempNode2;
tempNode1=tempNode2;
}
}
return head;
}
else{
return NULL;
}
}
LinkNode* ReverseLinkList(LinkNode* l){
LinkNode * temp=NULL;
LinkNode * p=l->next;
LinkNode * q=l->next->next;
while(q!=NULL){
temp=q->next;
q->next=p;
p=q;
q=temp;
}
l->next->next=NULL; //否则死循环
l->next=p;
return l;
}
int main(){
char* string="abcdefghijklmn";
LinkNode* list=InitLinkList(string,14);
PrintLinkList(list);
ReverseLinkList(list);
PrintLinkList(list);
getchar();
}