自学笔记|自学笔记-链式存储的基本操作(慢慢写)


目录

  • 前言
  • 具体实现
    • 1. 结点类型描述:
    • 2. 创建头结点
    • 3. 遍历链表
    • 4. 头插法(插入1-10)
    • 5. 尾插法(插入90-100)
    • 6. 按序号查找结点
    • 7. 按值查找表结点

前言 线性表的链式存储又称单链表,它是指通过一组任意的存储单元来存储线性表中的数据元素。为了简历数据元素之间的线性关系,对每个链表结点,除存放元素自身的信息外,还需存放一个指向其后继的指针。
其中:data为数据域,存放数据元素;next为指针域,存放其后继结点的地址。
【自学笔记|自学笔记-链式存储的基本操作(慢慢写)】虽说单链表可以解决顺序表需要大量连续存储单元的缺点,但是,其附带的指针域,也存在着浪费储存空间的缺点。
具体实现 1. 结点类型描述:
typedef struct LNode{ int data; struct LNode *next; }LNode,*LinkList;

2. 创建头结点
void initHead(LinkList& L){ L = (LinkList)malloc(sizeof(LNode)); L->data = https://www.it610.com/article/0; //头结点中存放个数 L->next = NULL; }

3. 遍历链表
void printList(LinkList L){ while(L!=NULL){ printf("%d ",L->data); L = L->next; } printf("\n"); }

4. 头插法(插入1-10)
void headInsert(LinkList L){ LinkList head = L; LinkList p = NULL; for(int i=1; i<=10; i++){ head->data +=1; //计数 p = (LinkList)malloc(sizeof(LNode)); p->data = https://www.it610.com/article/i; p->next = L->next; L->next = p; } }

5. 尾插法(插入90-100)
void tailInsert(LinkList L){ LinkList head = L; while(L->next!=NULL){ L = L->next; } LinkList tail = L; for(int i=90; i<=100; i++){ LinkList tmp = (LinkList)malloc(sizeof(LNode)); tmp->data = https://www.it610.com/article/i; tail->next = tmp; tail = tail->next; head->data++; } tail->next = NULL; }

6. 按序号查找结点
LinkList GetElem(LinkList L,int i){ //按照序号查找值 if(i>L->data){ return NULL; } int pos = 1; //计数 while(pos<=i){ L = L->next; pos++; } return L; }

7. 按值查找表结点
LinkList LocateElem(LinkList L,int num){ //按值查找表结点 LinkList p = L->next; while(p!=NULL&&p->data!=num){ p = p->next; } return p; }

    推荐阅读