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

xiaoxiao2021-02-28  60

单链表的创建方式:头插法和尾插法

声明单链表的数据结构

//*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++ 数据结构和算法相关的学习知识:

转载请注明原文地址: https://www.6miu.com/read-2626811.html

最新回复(0)