数据结构——线性表之链表
来源:互联网 发布:知己而知彼主页 编辑:程序博客网 时间:2024/05/17 08:12
线性表的链式存储表示的特点是用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。链表的物理存储结构可表示为:
和顺序表一样,链表也具有插入,删除,遍历,查找等操作。由于链表和顺序表在物理存储上不同,所以在实现上也有所不同。特别是在插入和删除上体现较大的优势。
——插入:——删除:
代码实现:
list_L.h
#ifndef __LIST_L_H__#define __LIST_L_H__typedef int ElemType;typedef struct Node{ElemType data;struct Node *next;}LNode,*LinkList;void InitList_L(LinkList &L);int ListLengh_L(LinkList L);bool ListInsert_L(LinkList &L,int i,ElemType e);bool ListDelete_L(LinkList &L,int i,ElemType &e);bool GetElem_L(LinkList L,int i,ElemType &e);void ListTraverse_L(LinkList L);void DestroyList_L(LinkList &L);#endif
list_L.cpp
#include "list_L.h"#include "iostream"#include "iomanip"using namespace std;void InitList_L(LinkList &L){L = (LNode*)malloc(sizeof(LNode));//分配一个节点的空间if (!L)//若分配失败,则退出{exit(1);}L->next = NULL;//链表的下一节点为空}int ListLengh_L(LinkList L){LinkList p;int k = 0;p = L->next;while (p){k++;p = p->next;}return k;}bool ListInsert_L(LinkList &L,int i,ElemType e){LinkList p,s;int j = 0;p = L;while ((p->next) && (j < i - 1)){p = p->next;j++;}if (j != i - 1){return false;}if ((s = (LNode*)malloc(sizeof(LNode))) == NULL){exit(1);}s->data = e;s->next = p->next;p->next = s;return true;}bool ListDelete_L(LinkList &L,int i,ElemType &e){LinkList p,q;int j = 0;p = L;while ((p->next->next) && (j < i - 1)){p = p->next;j++;}if (j != i - 1){return false;}q = p->next;p->next = q->next;e = q->data;free(q);return true;}void ListTraverse_L(LinkList L){LinkList pL = L->next;while (pL){cout<<setw(6)<<pL->data;pL = pL->next;}cout<<endl;}void DestroyList_L(LinkList &L){LinkList p,p1;p = L;while (p){p1 = p;p = p->next;free(p1);}L = NULL;}调用函数验证
main.cpp
#include <iostream>#include "stdlib.h"#include "list_L.h"using namespace std;int main(){LinkList head;ElemType x=0;int i,a[] = {6,8,16,2,34,56,7,10,22,45};InitList_L(head);for (i=1;i<=10;i++){if (!ListInsert_L(head,i,a[i-1])){cout<<"插入失败!"<<endl;system("pause");return 0;}}cout<<"删除前的链表为:"<<endl;ListTraverse_L(head);cout<<"当前链表长度为:"<<ListLengh_L(head)<<endl;cout<<"删除第4个元素"<<endl;ListDelete_L(head,4,x);cout<<"被删除的元素是:"<<x<<endl;cout<<"删除后的链表为:"<<endl;ListTraverse_L(head);cout<<"当前链表长度为:"<<ListLengh_L(head)<<endl;DestroyList_L(head);system("pause");return 0;}———————————————————————————————————————————————————
0 0
- 数据结构备忘之——线性表
- 数据结构之线性链表
- 数据结构之: 线性链表
- 数据结构之线性链表
- 数据结构之线性链表
- 数据结构之线性链表
- 数据结构之线性链表
- 数据结构—线性表
- 数据结构—线性表
- 数据结构—线性表
- 数据结构—线性表
- 数据结构——线性表之链表
- 数据结构——线性表之链表存储学习
- 数据结构之线性表——双向链表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构 第一章 绪论
- Sublime Text 3 安装Package Control
- TCMalloc
- Java构造和解析Json数据的两种方法详解二
- 访问phpMyAdmin时1045错误
- 数据结构——线性表之链表
- iOS 之NSPropertyListSerialization
- gsoap编译与简单使用
- Java JDBC学习实战(一): JDBC的基本操作
- nodemanager启动报Cannot convert identity certificate
- 14个HTML5实现的效果合集
- CF 366 C. Dima and Salad
- Convert Sorted List to Binary Search Tree [leetcode] O(n)的算法
- Aix内存优化