线性表的链式存储格式基本操作:创建链表、插入、删除、查找、求表长、打印链表
来源:互联网 发布:手机java小游戏代码 编辑:程序博客网 时间:2024/05/16 01:44
#include<iostream>#include<stdlib.h>using namespace std;typedef struct LNode{ int data; struct LNode *next;//next为指针域,存放其后继结点的地址。}LNode,*LinkList;//采用头插法建立单链表LinkList CreatList1(LinkList &L)//从表尾到表头逆向建立单链表,每次均在头结点之后插入元素{ int x; LNode *s; L=(LinkList)malloc(sizeof(LNode));//创建头结点 L->next=NULL;//初始为空链表 cin>>x; while(x!=7) { s=(LNode*)malloc(sizeof(LNode));//创建新结点 s->data=x; s->next=L->next; L->next=s;//将新结点插入表中,L为头指针 cin>>x; } return L;}//采用尾插法建立单链表LinkList CreatList2(LinkList &L)//从表头到表尾正向建立单链表L,每次均在表尾插入元素{ int x; L=(LinkList)malloc(sizeof(LNode)); LNode *s,*r=L;//r为表尾指针 cin>>x; while(x!=7) { s=(LNode*)malloc(sizeof(LNode)); s->data=x; r->next=s; r=s;//r指向新的表尾结点 cin>>x; } r->next=NULL;//尾结点指针置空 return L;}//按序号查找结点的值LNode *GetElem(LinkList L,int i)//取出单链表L(带头结点)中第i个位置的结点指针。{ int j=1;//计数,初始为1 LNode *p=L->next;//头结点指针赋给p if (i==0) return L;//若i=0,则返回头结点 if (i<1) return NULL;//若i无效,则返回NULL while (p&&j<i){//从第一个结点开始找,查找到第i个结点 p=p->next; j++; } return p;//返回第i个结点的指针,如果i大于表长,p=NULL,直接返回p即可。}//按值查找表结点LNode *LocateElem(LinkList L,int e){ LNode *p=L->next; while(p!=NULL&&p->data!=e) p=p->next; return p;}//计算表长以及打印链表LNode* PrintLength_ListLength(LinkList L,int &length){ int i=0; LNode *p=L->next; while(p!=NULL){ cout<<p->data<<" "; p=p->next; i++; } int *q=&i; length=*q; return L;}//删除结点bool ListDelete(LinkList &L,int i){ LNode *p=GetElem(L,i-1); LNode *q; q=p->next; p->next=q->next; free(q); return true;}//插入结点bool ListInsert(LinkList &L,int i,int elem){ LNode *q=GetElem(L,i-1); cout<<q->data<<endl; LNode *s; s= (LNode*)malloc(sizeof(LNode));//要记得给新加的结点分配空间 s->next=q->next; q->next=s; s->data=elem; return true;}int main(){ LinkList L; CreatList2(L); int length; //测试表长 PrintLength_ListLength(L,length); cout<<"表长为:"<<length<<endl; //测试 插入结点 if (ListInsert(L,3,99)) { PrintLength_ListLength(L,length); cout<<"表长为:"<<length<<endl; } //测试 删除结点 if (ListDelete(L,3)) { PrintLength_ListLength(L,length); cout<<"表长为:"<<length<<endl; } return 0;}
0 0
- 线性表的链式存储格式基本操作:创建链表、插入、删除、查找、求表长、打印链表
- 线性表的顺序存储格式基本操作:初始化、插入、删除、查找、打印
- 编程实现顺序存储结构和链式存储结构线性表的建立、查找、插入、删除等基本操作
- 线性表的链式存储的插入与删除操作
- 线性表的基本操作,包括:创建、插入、删除、查找等基本操作
- 数据结构 P28-29 算法实现 线性表的链式存储结构——链表的查找、插入与删除
- 关于线性表的链式存储(链表)的创建,头插法,尾插法,删除链表结点的操作
- c++之链表篇1:单向链表的创建,打印,删除,插入,销毁等基本操作
- 线性表的链式存储(单链表)的基本操作
- 线性链表 查找 插入 删除 创建 merge
- 《数据结构》线性表:链式存储结构实现示例代码二(插入、删除、查找)
- 链式线性表的插入与删除
- 线性表的链式存储与基本操作
- 单向链表的操作:创建,删除,插入,销毁,查找
- 数据结构_线性表_链式存储_单向循环链表的基本操作
- 数据结构_线性表_链式存储_双向循环链表的基本操作
- 线性表的输入输出查找删除插入(链式,头插入)
- 线性表的输入输出查找删除插入(链式,尾插入)
- 种子填充法
- Centos7 网络配置 开启(动态IP&静态IP) 查IP 安装 net-tools 升级 yum
- GCC之C 语言编译过程
- 摄像机标定04_从单幅图像中提取世界坐标
- 字符设备关键函数与编程框架
- 线性表的链式存储格式基本操作:创建链表、插入、删除、查找、求表长、打印链表
- httpClient发送https请求
- TODO:排列组合问题:n个数中取m个
- ImageLoader用法总结
- 用代码创建一个表
- laravel小技艺
- SB的生日
- Android Camera2 自定义相机
- shell脚本之定义变量