数据结构----线性表之链式存储
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构----线性表之链式存储相关的知识,希望对你有一定的参考价值。
线性表的链式存储以及相关操作代码如下:
#include<iostream> #include<time.h> using namespace std; typedef int ElemType; typedef struct Node{ ElemType data; Node *next; }; typedef struct Node *LinkList; //读取 void getElem(LinkList L,int i,ElemType *e){ int j; LinkList p; p = L; //不带头结点 j = 1; while (p&& j < i){ p = p->next; ++j; } if (!p || j>1){ cout << "第i个元素不存在!"; } *e = p->data; } //读取整个链表 void getAllElem(LinkList *L){ LinkList p = (*L)->next; int i = 1; while (p){ cout << "第" << i << "个节点:" << p->data << endl;; p = p->next; i++; } } //插入 void listInsert(LinkList *L, int i, ElemType e){ int j; LinkList p, s;//指向链表节点的指针 p = *L; //不带头 j = 1; while (p&&j < i){ p = p->next; ++j; } if (!p || j>i){ cout << "第i个元素不存在!"; } s = new Node; s->data = e; s->next = p->next; p->next = s; } //删除 void ListDelete(LinkList *L, int i, ElemType *e){ int j; LinkList p, q; p = *L; j = 1; while (p->next && j < i){ p = p->next; ++j; } if (!(p->next) || j>i){ cout << "第i个元素不存在"; } q = p->next; p->next = q->next; *e = q->data; free(q); } //创建 头插法 void CreateListHead(LinkList *L, int n){ LinkList p; srand(time(0)); *L = new Node; (*L)->next = NULL; for (int i = 0; i < n; ++i){ p = new Node; p->data = rand() % 100 + 1; p->next = (*L)->next; (*L)->next = p; } } //创建 尾插法 void CreateListTail(LinkList *L,int n){ LinkList p, r; srand(time(0)); *L = new Node; r = *L; for (int i = 0; i < n; ++i){ p = new Node; p->data = rand() % 100 + 1; r->next = p; r = p; } r->next = NULL; } //删除整个表 void ClearList(LinkList *L){ LinkList p, q; p = (*L)->next; while (p){ q = p->next; free(p); p = q; } (*L)->next = NULL; } int main(){ LinkList *L = new LinkList; CreateListTail(L, 100); getAllElem(L); }
以上是关于数据结构----线性表之链式存储的主要内容,如果未能解决你的问题,请参考以下文章