您的位置:首页 > 理论基础 > 数据结构算法

头插法和尾插法创建、删除、遍历单链表

2018-02-18 20:33 337 查看
单链表的创建方式:头插法和尾插法

声明单链表的数据结构

//*head表示头插法链表的头指针
//*LinkListHead表示头插法创建的链表
//tail表示尾插法链表的头指针
//*LinkListTail表示尾插法创建的链表
struct Node {
int data;
Node *next;
} *head,*tail,*LinkListHead,*LinkListTail;


头插法:

头插法创建单链表算法

Node *CreateLinkListByHead(int n){
Node *p;
LinkListHead=new Node;
LinkListHead->next=NULL;
head=LinkListHead;

for(auto i=0;i<n;i++){
p=new Node;
p->data=i;
p->next=LinkListHead>next;
LinkListHead->next=p;
}
cout<<"头插法创建的单链表"
return head;
}


尾插法

尾插法创建单链表算法

Node *CreateLinkListByTail(int n){
Node *p;
LinkListTail=new Node;
LinkListTail->next=NULL;
tail=LinkListTail;
Node *temp=LinkListTail;
for(auto i=0;i<n;i++){
p=new Node;
temp->next=p;
temp=p;
}
temp->next=NULL;
cout<<"尾插法创建的单链表"<<endl;
return tail;
}


遍历链表:

void ForeachLinkList(Node *head){
Node *p=head->next;

while(p!=NULL){
cout<<p->data<<"  ";
p=p->next;
}
cout<<"\n";
}


测试代码如下:

int main(){
//头插法创建单链表
CreateLinkListByHead(10);
//尾插法创建单链表
createLinkListByTail(10);

//链表的遍历(头插法)
ForeachLinkList(head);
//链表的遍历(尾插法)
ForeachLinkList(tail);
}


链表的删除

void DeleteLinkList(Node *head){
Node *p=head->next;
Node *temp;
while(p){
temp=p->next;
delete p;
p=temp;
}
head->next=NULL;
}


测试代码如下:

int main()
{
Node *LinkListHead = CreateLinkListByHead(10);
ForeachLinkList(LinkListHead);
Node *LinkListTail = CreateLinkListByTail(10);
ForeachLinkList(LinkListTail);

DeleteLinkList(LinkListHead);
std::cout << "执行删除操作之后遍历链表" << std::endl;
ForeachLinkList(LinkListHead);
return 0;
}


输出如下所示:



工程地址:

https://github.com/USuperMe/HeadAndTailInsertLinkList.git

欢迎关注公众号,不定期分享一些Unity3D、C#、C++ 数据结构和算法相关的学习知识:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐