数据结构学习之链表

链  表


 1.修改
 int ReviseLinkList(LinkList *list, DATATYPE old, DATATYPE new);
 {
  1.遍历链表查找old元素
  2.修改old元素为new元素
  3.成功返回0
 }

 2.尾插法
 int LastInsertLinkList(Linklist *list, DATATYPE data);
 功能:
  在链表末尾插入一个节点
 参数:
  list:链表的地址
  data:要插入的数据
 返回值:
  成功返回0

 int LastInsertLinkList(Linklist *list, DATATYPE data)
 {
  1.定义一个链表节点指针指向最后一个节点
  2.申请一个链表节点空间并进行赋值
  3.在链表末尾插入该节点
  4.clen++
  5.返回0
 }

双向链表
 1.概念
  链表节点既可以找到后面的节点,也可
  以找到前面的节点,这种链表成为双向
  链表

 2.数据结构
  1.链表节点
   typedef struct node
   {
    struct node *pre;
    DATATYPE data;
    struct node *next;
   }LinkNode;
  2.链表头
   typedef struct list
   {
    LinkNode *head;
    int clen;
    int tlen;
   }DouList;

 3.链表的操作
  1.创建
  DouList *CreateDouList(int len);
  功能:
   创建一个双向链表
  参数:
   len:链表的长度
  返回值:
   成功返回链表地址

  DouList *CreateDouList(int len)
  {
   1.申请链表头空间
   2.申请链表节点空间
   3.将链表头和空白节点链接起来
   4.返回链表地址
  }
  
  2.插入
  int InsertDouList(DouList *list, DATATYPE data);
  功能:
   在双向链表中插入一个元素
  参数:
   list:双向链表的地址
   data:要插入的数据
  返回值:
   成功返回0

  int InsertDouList(DouList *list, DATATYPE data)
  {
   1.申请插入节点的空间
   2.对对应的成员变量赋值
   3.区分是第一次插入还是第n次插入
   4.按照区分的结果进行不同的插入
   5.clen++
   6.成功返回0
  }

  3.查看
  int ShowDouList(DouList *list);
  功能:
   查看一个链表中的数据
  参数:
   list:双向链表的地址
  返回值:
   成功返回0
  
  4.删除
  int DeleteDouList(DouList *list, DATATYPE data);
  功能:
   删除某个元素
  参数:
   list:双向链表的地址
   data:要删除的数据
  返回值:
   成功返回0

  int DeleteDouList(DouList *list, DATATYPE data)
  {
   1.判断链表是否为空
   2.判断该元素是否存在
   3.如果存在则删除
   4.成功返回0
  }

  5.查找
  int FindDouList(DouList *list, DATATYPE data);
  功能:
   在双向链表中查找某个元素
  参数:
   list:双向链表的地址
   data:要查找的数据
  返回值:
   存在返回1
   不存在返回0

  6.修改
  int ReviseDouList(DouList *list, DATATYPE old,DATATYPE new);
  功能:
   修改双向链表中的一个元素
  参数:
   list:双向链表的地址
   old:要修改的元素
   new:要修改成的元素
  返回值:
   成功返回0

  7.销毁
  int DestroyDouList(DouList *list);
  
循环链表
 1.概念
  最后一个节点指向第一个节点的链表叫
  做循环链表
 
 2.数据结构
  typedef struct node
  {
   DATATYPE data;
   struct node *next;
  }LinkNode;
  typedef struct list
  {
   LinkNode *head;
   int clen;
   int tlen;
  }CirList;
 3.操作
  1.创建
  CirList *CreateCirList(int len);

  2.添加
  int InsertCirList(CirList *list, DATATYPE data);

  3.查看
  int ShowCirList(CirList *list);

  4.查找
  int FindCirList(CirList *list, DATATYPE data);

  5.删除
  int DeleteCirList(CirList *list, DATATYPE data);

  6.修改
  int ReviseCirList(CirList *list, DATATYPE old, DATATYPE new);

  7.销毁
  int DestroyCirList(CirList *list);



 1.概念
 栈是表的一种特殊形式

 FILO
 后进先出
 先进后出

 栈顶和栈底
 允许对栈进行压栈出栈操作的一端叫做栈顶
 另外的一段叫做栈底

 2.操作
  1.创建

  2.销毁

  3.压栈

  4.出栈

  5.判断栈是否为空栈

  6.判断栈是否位满栈

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值