チェーンテーブルの基本操作とその反転
1582 ワード
チェーンテーブルのノード宣言、確立、印刷、反転.
#include
#include
using namespace std;
//
typedef struct LinklistNode{
char data;
struct LinklistNode* next;
}LNode;
// , ,
LNode* creatLinklist(LNode* &head, char val)
{
if(head==NULL)
{
LNode* head=new LNode;
head->data=val;
head->next=NULL;
return head;
}
else
{
LNode* flag=head;
while(flag->next!=NULL)
{
flag=flag->next;
}
LNode* last=new LNode;
last->data=val;
last->next=NULL;
flag->next=last;
return head;
}
}
//
void printLinklist(LNode* head)
{
if(head==NULL) return;
LNode* flag=head;
while(flag!=NULL)
{
cout<data<next;
}
return;
}
// ,
LNode* reverseLinklist(LNode* head)
{
if(head==NULL||head->next==NULL) return head;
LNode* p0=head;
LNode* p1=p0->next;
LNode* p2=p0->next->next;
while(p2!=NULL)
{
p1->next=p0;
p0=p1;
p1=p2;
p2=p2->next;
}
p1->next=p0;
head->next=NULL;
return p1;
}
//
int main()
{
LNode*head=NULL;
head=creatLinklist(head, 'a');
head=creatLinklist(head, 'b');
head=creatLinklist(head, 'c');
head=creatLinklist(head, 'd');
head=creatLinklist(head, 'e');
head=creatLinklist(head, 'f');
head=creatLinklist(head, 'g');
head=creatLinklist(head, 'h');
head=creatLinklist(head, 'i');
printLinklist(head);
LNode* reversedList=reverseLinklist(head);
cout<