数据结构——线性表——链式存储结构——C++实现线性表
来源:互联网 发布:手机九宫格软件 编辑:程序博客网 时间:2024/06/06 00:58
链式存储结构C++实现篇:主要实现了线性表的定义、初始化、显示、增、删结点、查找结点操作。
切记亲力亲为,动手实践写代码
main.cpp
/*************************************************************************** * @file main.cpp * @author MISAYAONE * @date 11 May 2017 * @remark 11 May 2017 * @theme Linked List ***************************************************************************/ #include "Linked_list.h"#include <iostream>using namespace std;int main(int argc, char** argv){Linked_list L;Init_linkedlist_back(L);cout<<"链表包含元素为:";Display(L);cout<<endl;//查找结点值为2的结点node *p = Getelem(L,4);add(L,p,2);cout<<"插入新结点之后包含元素为";Display(L);cout<<endl;node *q = Getelem(L,3);Delete(L,q);cout<<"删除结点之后包含元素为";Display(L);system("pause");return 0;}
Linked_list.h
#include "Linked_list.h"#include <iostream>using std::cin;using std::cout;using std::endl;//注意链表的表示方法:通常使用第一个结点来标识一个链表,头插法bool Init_linkedlist(Linked_list &L){node *node1; //新建一结点int x; //用于存放输入的结点值L = (Linked_list)malloc(sizeof(node));L->next = NULL;while(cin>>x){node1 = (node*)malloc(sizeof(node)); //先分配内存,以便后面的使用 node1->data = x; //将值存入当前结点node1->next = L->next; //将当前结点置于表头L->next = node1; }return true;}//注意链表的表示方法:通常使用第一个结点来标识一个链表,尾插法bool Init_linkedlist_back(Linked_list &L){node *node1,*node2; //新建结点int x; //用于存放输入的结点值L = (Linked_list)malloc(sizeof(node));L->next = NULL;node2 = L;while(cin>>x){node1 = (node*)malloc(sizeof(node)); //先分配内存,以便后面的使用 node1->data = x; //将值存入当前结点node2->next = node1; //将当前结点置于表尾node2 = node1; node1->next = NULL;}node2->next = NULL;return true;}bool Display(Linked_list L){node *p = L;while (p && p->next) //P结点以及P的后继结点都不为NULL{p = p->next;cout<<p->data<<" ";}return true;}//按值查找node *Getelem(Linked_list L,datatype i){node *p = L;while(p->data != i && p != NULL){if (p->next == NULL) //若未找到,返回NULL{return NULL;}p = p->next;}return p;}//在结点p之后插入值为i的新结点bool add(Linked_list &L,node *p,int i){if (p == NULL) //判断传入结点的有效性{return true;}node *p1;p1 = (node*)malloc(sizeof(node));p1->data = i;p1->next = p->next;p->next = p1;return true;}//删除结点p,需要先找到p的前驱结点bool Delete(Linked_list &L, node *p){if (p == NULL) //判断传入结点的有效性{return true;}node *q = L;while (q->next != p){q = q->next;}q->next = p->next;free(p);//注意需要释放p结点return true;}
Linked_list.cpp
typedef int datatype;//将链表中的数据元素定义为inttypedef struct node {datatype data;struct node* next;} *Linked_list; //定义结构别名//链表初始化bool Init_linkedlist(Linked_list &L);//尾插法bool Init_linkedlist_back(Linked_list &L);//按值查找结点node *Getelem(Linked_list L,datatype i);//链表插入结点bool add(Linked_list &L,node *p,int i);//链表删除结点bool Delete(Linked_list &L, node *p);//显示链表全部结点bool Display(Linked_list L);
1 0
- 数据结构——线性表——链式存储结构——C++实现线性表
- 线性表—链式存储
- 线性表——链式结构(c语言实现)
- 数据结构——线性表(顺序结构和链式结构)
- 数据结构——线性表的链式存储
- 数据结构——线性表(链式存储)
- 【大话数据结构】——-线性表之链式存储
- 数据结构——线性表之链式存储
- 数据结构之线性表——栈的链式存储
- 数据结构之线性表——队列的链式存储
- 线性表的链式存储结构——单链表
- 线性表——链式存储结构之单链表
- 线性表——链式存储结构之单链表
- 线性表——链式存储结构之双链表
- 线性表——链式存储结构之循环单链表
- 线性表——链式存储结构之循环双链表
- JAVA数据结构之线性表的链式存储结构——循环链表
- JAVA数据结构之线性表的链式存储结构——双向链表
- hive-2.1.1安装部署
- printWriter乱码
- 数据结构-排序算法
- 多线程学习轨迹
- 包含min函数的栈
- 数据结构——线性表——链式存储结构——C++实现线性表
- Linux C 文件操作相关整理
- 请求筛选模块被配置为拒绝包含双重转义序列的请求。---该问题的解决办法之一
- 帮 IT 人减压放松的 10 个良心网站
- UVA
- C# 学习笔记 4
- 1021. 个位数统计 (15) PAT
- FAR 和 FRR
- **Android 图片处理系列:图片压缩处理