单链表复习
作者:vpoet
mails:18200268879@163.com
注:转载请注明出处,谢谢合作
#include <iostream>
#include <stack>
using namespace std;
typedef struct ListNode
{
int data;
struct ListNode* next;
}NODE;
NODE *CreateList()
{
NODE * head,*p,*s;
head=(NODE*)malloc(sizeof(NODE));
p=head;
int LinkData;
int InputIndex=1;
while(InputIndex)
{
cout<<"Please input the Node data.(if 0 is inputed,CreateLink Over!): ";
cin>>LinkData;
if(0!=LinkData)
{
s=(NODE*)malloc(sizeof(NODE));
s->data=LinkData;
p->next=s;
p=s;
}
else
{
InputIndex=0;
}
}
head=head->next;
p->next=NULL;
return head;
}
void Print(NODE *head)
{
NODE *p=head;
cout<<"The LinkList is: ";
while(p!=NULL)
{
cout<<p->data<<" ";
p=p->next;
}
}
void ListLength(NODE*head)
{
NODE* p=head;
int count =0;
while(p!=NULL)
{
count++;
p=p->next;
}
cout<<"The length is: "<<count<<endl;
}
void InsertNode(NODE* head)
{
NODE *p=head;
while(p->next!=NULL)
{
p=p->next;
}
NODE *New;
New=(NODE*)malloc(sizeof(NODE));
cout<<"Please input the new data: ";
cin>>New->data;
p->next=New;
New->next=NULL;
head=p;
}
void ReversePrint(NODE* head)
{
stack <NODE*> StackNode;
NODE *p=head;
while(p!=NULL)
{
StackNode.push(p);
p=p->next;
}
cout<<"Reverse to Print: ";
while(!StackNode.empty())
{
NODE* temp;
temp=StackNode.top();
StackNode.pop();
cout<<temp->data<<" ";
}
}
void DeleteNode(NODE *head,int DelValue)
{
NODE *p=head;
while(p!=NULL)
{
if(p->next->data==DelValue)
{
p->next=p->next->next;
break;
}
else
{
p=p->next;
}
}
head=p;
}
int main()
{
cout<<"Create New LinkList....\n"<<endl;
NODE *p=CreateList();
cout<<"Print the LinkList.....\n"<<endl;
Print(p);
cout<<"Print the length of LinkList...\n"<<endl;
ListLength(p);
cout<<"Insert a New LinkNode....\n"<<endl;
InsertNode(p);
cout<<"Cout The New LinkNode....\n"<<endl;
Print(p);
cout<<"Reverse to input the LinkList...\n"<<endl;
ReversePrint(p);
cout<<"Delete a Node in LinkList....\n"<<endl;
int DelValue;
cout<<"Please input the Delete Node Value"<<endl;
cin>>DelValue;
DeleteNode(p,DelValue);
cout<<"Print the del Node LinkList....\n"<<endl;
Print(p);
cout<<endl;
return 0;
}