c++实现单链表
来源:互联网 发布:网络直播服务器 编辑:程序博客网 时间:2024/06/07 19:35
#include <iostream>#include <stdio.h>using namespace std;//#define DataType inttypedef struct node{int data; struct node *next;}SingleLinkNode,*PointerFirst;//链表结点,链表头指针/*void CreatList(PointerFirst &head,int a[],int n)//+++++++++++++++++1.头插法建立单链表{PointerFirst s;int i;head=new SingleLinkNode; head->next=NULL; for(i=0;i<n;i++) { s=new SingleLinkNode; s->data=a[i]; s->next=head->next; head->next=s; }}*/void CreatList(PointerFirst &head,int a[],int n)//++++++++尾插法,CreatList(链表头指针,数组地址,结点个数){PointerFirst PNew,PEnd;//PEnd末尾指针,PNew新建结点的指针int i;head=new SingleLinkNode;//创建头结点PEnd=head;//PEnd始终指向尾结点,开始时指向头结点for(i=0;i<n;i++){PNew=new SingleLinkNode;//创建新结点PNew->data=a[i];//新建结点被赋值PEnd->next=PNew;//将*PNew插入*PEnd之后PEnd=PNew;}PEnd->next=NULL;//PEnd末尾指针始终指向NULL}void InitalList(PointerFirst &head)//+++++++++++++2.初始化单链表{head=new SingleLinkNode;//创建头结点*headhead->next=NULL;}int GetLength(PointerFirst &head)//++++++++++++++++3.求线性表的长度运算{int i=0;PointerFirst PTemp=head->next;//从第一个结点开始,头结点不算while(PTemp!=NULL){ i++;//结点数量+1PTemp=PTemp->next;//指向下个结点搜索}return i;}SingleLinkNode *GetElement(PointerFirst &head,int i)//+++++++++++++++4.求单链表第i个元素的运算{int j=1;SingleLinkNode *PTemp=head->next;if(i<1||i>GetLength(head)){return NULL;//i参数不正确,返回NULL}while(j<i)//从第一个结点开始找,查找第i个结点{PTemp=PTemp->next;//向下一个结点搜索j++;}return PTemp;//返回第i个结点的指针}SingleLinkNode *LocateElement(PointerFirst &head,int x)//+++++++++++++5.按值查找{SingleLinkNode *PTemp=head->next;while(PTemp!=head&&PTemp->data!=x)//从第1个结点开始查找data域为x的结点{PTemp=PTemp->next;}return PTemp;//找到后返回该结点的指针,否则返回NULL}int Insert(PointerFirst &head,int i,int x)//++++++++++++++++6.插入结点{int j=1;SingleLinkNode *PTemp=head,*s;s=new SingleLinkNode;//创建一个要插入的结点s->data=x;//对插入结点赋值s->next=NULL;if(i<1||i>GetLength(head)+1)//插入位置检查是否合理{return 0;}while(j<i)//寻找插入位置{PTemp=PTemp->next;j++;}s->next=PTemp->next;//插入结点PTemp->next=s;return 1;//成功返回1}int Delet(PointerFirst &head,int i)//++++++++++++++++++7.删除结点运算{int j=1;PointerFirst PTemp=head,q;if(i<1||i>GetLength(head))//删除位置合理性检查{return 0;}while(j<i)//查找第i-1个结点{PTemp=PTemp->next;j++;}q=PTemp->next;PTemp->next=q->next;//删除结点delete q;//释放结点空间return 1;}void Display(PointerFirst &head)//++++++++++++++++++++8.遍历单链表{PointerFirst PTemp=head->next;while(PTemp){cout<<PTemp->data<<' ';PTemp=PTemp->next;}return ;}int main(){PointerFirst Head;int a[5]={1,2,3,4,5};CreatList(Head,a,5);//CreatList(链表头指针,数组地址,结点个数)Insert(Head,6,6);//Insert(链表头指针,位置,数值);Display(Head);system("pause");return 0;}
在www.cpp.sh的在线编译器的运行结果是
0 0
- 单链表(C#)实现
- 用C实现单链表
- C实现单链表
- C语言实现单链表
- 数据结构---单链表c实现
- C语言实现单链表
- 单链表的C实现
- C语言单链表实现
- 单链表实现(C++)
- C语言实现单链表
- 单链表C语言实现
- c语言单链表实现
- 单链表反转 c实现
- 单链表之C实现
- 单链表-C实现-初级
- 单链表 C语言实现
- 单链表实现-c
- 【C++】单链表的实现
- Flatten Binary Tree to Linked List - LeetCode
- C++ 静态存储区、栈和堆的区别(转载)
- android网络框架volley学习之Volley类
- vpn配置
- android apk 防止反编译技术第一篇-加壳技术
- c++实现单链表
- 2015NCHU第一届ACM新生选拔赛D题题解
- JAVA中上转型对象的详细解释
- 第10章 关联容器
- java.io.IOException: Failed to replace a bad datanode on the existing pipeline due to no more good
- 用socket(asio)实现了smtp的几个简单的指令
- 个人学习之感
- eclipse中创建的web项目中的jsp页面报错
- ThinkPHP框架的的流程控制-请求视图页面