欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > c/c++ >内容正文

c/c++

C++ 头插法建立单链表,单链表原地逆置以及尾插法建立单链表

发布时间:2023/12/31 c/c++ 53 豆豆
生活随笔 收集整理的这篇文章主要介绍了 C++ 头插法建立单链表,单链表原地逆置以及尾插法建立单链表 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
#include <iostream> #include <stdlib.h> #include <cstdio> typedef int ElemType; using namespace std; //单链表的结构体 typedef struct LNode {ElemType data;LNode *next; }LNode,*LinkList; //头插法建立单链表 LinkList List_HeadInsert(LinkList &L) {L=(LNode *)malloc(sizeof(LNode));L->next=NULL;LNode *s;//s为新插入结点的指针int x;scanf("%d",&x);while(x!=9999){s=(LNode *)malloc(sizeof(LNode));//为新结点分配一片内存空间,并将该内存空间的返回地址赋值给ss->data=x;s->next=L->next;//将s插入到头结点之后L->next=s;scanf("%d",&x);}return L; } //尾插法建立单链表 LinkList List_TailInsert(LinkList &L) {L=(LNode *)malloc(sizeof(LNode));L->next=NULL;LNode *s;LNode *r=L;//r为尾指针int x;scanf("%d",&x);while(x!=9999){s=(LNode *)malloc(sizeof(LNode));s->data=x;r->next=s;//将s插入在r之后r=s;//将r向后移动,保证r一直是尾指针scanf("%d",&x);}r->next=NULL;//将尾指针的next置为空,防止其指向其他内存空间return L; } //单链表的原地逆置 LinkList Reverse(LinkList &L) {LNode *p=L->next;//用p保存L的next域L->next=NULL;//将L的next域置为空LNode *r;while(p!=NULL){r=p->next;//用r来保存p的next域,防止断链p->next=L->next;//将p插入在L之后L->next=p;p=r;//将p向后移动}return L; } //打印输出单链表 ElemType PrintList(LinkList L) {LNode *p=L->next;while(p!=NULL){cout<<p->data<<" ";p=p->next;}cout<<endl;return 0; } int main() {LinkList L1;//声明单链表cout<<"请输入单链表L1中的数据元素:"<<endl;List_HeadInsert(L1);//头插法建表cout<<"头插法建立单链表的结果为:"<<endl;PrintList(L1);//打印输出单链表Reverse(L1);//单链表原地逆置cout<<"将此单链表原地逆置的结果为:"<<endl;PrintList(L1);//打印输出单链表LinkList L2;cout<<"请输入单链表L2中的数据元素:"<<endl;List_TailInsert(L2);cout<<"尾插法建立单链表的结果为:"<<endl;PrintList(L2);return 0; }

总结

以上是生活随笔为你收集整理的C++ 头插法建立单链表,单链表原地逆置以及尾插法建立单链表的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。