链表的创建,带头指针的头插法,尾插法,不带头指针的头插法,尾插法
#include <iostream>
#include<malloc.h>
using namespace std;
typedef struct node
{
int num;
struct node * next;
} Node,*pNode;
//带头指针尾插法创建链表
pNode createList1()
{
pNode pHead=(pNode)malloc(sizeof(Node));
pNode pTail=pHead;
pTail->next=NULL;
for(int i=0;i<10;i++)
{
pNode pnew=(pNode)malloc(sizeof(Node));
pnew->num=i;
pnew->next=NULL;
pTail->next=pnew;
pTail=pnew;
}
return pHead;
}
//带头指针头插法实现链表的插入
pNode createList2()
{
//创建一个头指针
pNode pHead=(pNode)malloc(sizeof(Node));
pNode phead=pHead;
phead->next=NULL;
for(int i=0;i<10;i++){
if(phead==pHead)
phead=NULL;
pNode pnew=(pNode)malloc(sizeof(Node));
pnew->num=i;
pnew->next=phead;
phead=pnew;
}
pHead->next=phead;
return pHead;
}
//不带头指针尾插法创建链表
pNode createList3()
{
pNode pHead;
pNode pTail=NULL;
for(int i=0;i<10;i++)
{
if(pTail==NULL)
{
pTail=(pNode)malloc(sizeof(Node));
pTail->num=i;
pTail->next=NULL;
pHead=pTail;
}
else
{
pNode pnew=(pNode)malloc(sizeof(Node));
pnew->num=i;
pnew->next=NULL;
pTail->next=pnew;
pTail=pnew;
}
}
return pHead;
}
//不带头指针头插法实现链表的插入
pNode createList4()
{
//创建一个头指针
pNode phead=NULL;
for(int i=0;i<10;i++)
{
if(phead==NULL)
{
phead=(pNode)malloc(sizeof(Node));
phead->num=i;
phead->next=NULL;
}
else
{
pNode pnew=(pNode)malloc(sizeof(Node));
pnew->num=i;
pnew->next=phead;
phead=pnew;
}
}
return phead;
}
//链表的遍历
void traver( pNode pHead)
{
if(pHead==NULL) return;
pNode ptrave=pHead;
while(ptrave->next!=NULL)
{
printf("%d->",ptrave->num);
ptrave=ptrave->next;
}
printf("%d",ptrave->num);
cout<<endl;
}
int main()
{
cout<<"带头指针,头指针为一随机值"<<endl;
pNode p1=createList1();
traver(p1);
pNode p2=createList2();
traver(p2);
cout<<"不带头指针"<<endl;
pNode p3=createList3();
traver(p3);
pNode p4=createList4();
traver(p4);
return 0;
}
输出结果:
带头指针,头指针为一随机值
0->0->1->2->3->4->5->6->7->8->9
0->9->8->7->6->5->4->3->2->1->0
不带头指针
0->1->2->3->4->5->6->7->8->9
9->8->7->6->5->4->3->2->1->0