C++ 头插法建立单链表,单链表原地逆置以及尾插法建立单链表
生活随笔
收集整理的这篇文章主要介绍了
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++ 头插法建立单链表,单链表原地逆置以及尾插法建立单链表的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 地图绘制和四色算法,图搜索算法,最小生成
- 下一篇: 头插法、尾插法建立单链表(含详细注释C+