数据结构学习之顺序表(二)

来源:互联网 发布:mysql.sock 不存在 编辑:程序博客网 时间:2024/06/07 17:47

顺 序 表


 1.判断顺序表是否为空
 int IsEmptySeqList(SeqList *list);
 功能:
  判断顺序表是否为空
 参数:
  list:顺序表的地址
 返回值:
  如果为空返回1
  不为空返回0

 int IsEmptySeqList(SeqList *list)
 {
  1.判断顺序表元素是否为空
  2.为空返回1
  3.非空返回0
 }
 
 2.删除指定位置的元素
 DATATYPE DeleteSeqList(SeqList *list, int pos)
 功能:
  删除顺序表中指定位置的元素
 参数:
  list:顺序表的地址
  pos:要删除元素的位置
 返回值:
  成功返回删除得到的数据

 DATATYPE DeleteSeqList(SeqList *list, int pos)
 {
  DATATYPE data;

  1.判断顺序表是否为空
  if (IsEmptySeqList(list))
  2.如果为空返回-1
  return -1;
  3.把第n个元素开始直到最后一个元素
    依次向前挪动一位
  data = list->head[i-1];
  for (;i < list->clen;i++)
   list->head[i-1] = list->head[i];
  4.clen--
  list->clen--;
  5.返回获得的数据
  return data;
 }
 
 3.查找
 int FindSeqList(SeqList *list, DATATYPE data)
 功能:
  在顺序表中查找一个元素是否存在
 参数:
  list:顺序表的地址
  data:要查找的数据
 返回值:
  存在返回1
  不存在返回0

 int FindSeqList(SeqList *list, DATATYPE data)
 {
  1.从第0个到最后一个元素遍历,判断data数据
    是否存在
  2.存在返回1
  3.不存在返回0
 }

 4.修改
 int ReviseSeqList(SeqList *list, DATATYPE old, DATATYPE new);
 功能:
  修改顺序表中的指定元素
 参数:
  old:要修改的元素
  new:要修改成的元素
  list:顺序表的地址
 返回值:
  成功返回0

 int ReviseSeqList(SeqList *list, DATATYPE old, DATATYPE new);
 {
  1.找到old元素
  2.修改成new数据
  3.返回0
 }

 5.按位置添加元素
 int PosInsertSeqList(SeqList *list, DATATYPE data, int pos);
 功能:
  在指定位置插入某个元素到顺序表中
 参数:
  list:顺序表地址
  data:要插入的数据
  pos:要插入数据的位置
 返回值:
  成功返回0
 
 int PosInsertSeqList(SeqList *list, DATATYPE data, int pos);
 {
  1.判断是否能插入
  2.从该位置开始到最后一个元素都要向后挪动一位
  3.插入元素
  4.clen++
  5.返回0
 }

链表
 1.概念
  表中的数据元素按照链式存储的方式构成的数据结构
  叫做链表

 2.链表结构
  1.链表节点
  typedef struct node
  {
   DATATYPE data;
   struct node *next;
  }LinkNode;

  2.链表头
  typedef struct list
  {
   LinkNode *head;
   int clen;
   int tlen;
  }LinkList;
 3.链表的操作
  1.链表的创建
  LinkList *CreateLinkList(int len);
  功能:
   创建一个链表头
  参数:
   len:最大能存放元素的个数
  返回值:
   成功返回链表头指针

  LinkList *CreateLinkList(int len)
  {
   1.申请链表头空间
   2.判断是否申请成功
   3.清空链表头
   4.对对应的元素赋值
   5.返回链表头指针
  }

  2.链表的插入
  int InsertLinkList(LinkList *list, DATATYPE data);
  功能:
   在链表中插入一个节点元素
  参数:
   list:要插入链表的地址
   data:要插入链表的数据
  返回值:
   成功返回0

  int InsertLinkList(LinkList *list, DATATYPE data)
  {
   1.判断链表是否存满
   2.申请链表节点空间
   3.对链表节点成员变量赋值
   4.clen++
   5.返回0
  }

  3.链表的查看
  int ShowLinkList(LinkList *list)
  {
   1.定义一个指针指向第一个链表节点
   2.打印p->data
   3.让p指向相依个节点 p = p->next
   4.循环2,3步的操作直到打印最后一个节点
   5.返回0
  }
 
  4.链表的删除
  int DeleteLinkList(LinkList *list, DATATYPE data)
  功能:
   删除链表中指定的元素
  参数:
   list:链表的地址
   data:要删除的数据
  返回值:
   成功返回0

  int DeleteLinkList(LinkList *list, DATATYPE data)
  {
   1.判断链表是否为空
   2.定义一个指针指向前一个元素,定义另一个
   指针指向后面的元素利用后面的指针遍历查找
   要删除的元素
   3.删除节点
   4.clen--;
   5.返回0
  }

  5.销毁
  int DestroyLinkList(LinkList *list);
  功能:
   销毁一个链表
  参数:
   list:要销毁链表的地址
  返回值:
   成功返回0

  int DestroyLinkList(LinkList *list)
  {
   1.list->head指向第一个节点的后一个节点
   2.free掉第一个链表节点
   3.循环2的操作直到链表中没有节点为止
   4.返回0
  }

  6.查找
  int FindLinkist(LinkList *list, DATATYPE data);
  功能:
   查找链表中是否存在data元素
  参数:
   list:链表的地址
   data:查找的元素
  返回值:
   如果元素存在返回1
   不存在返回0

0 0
原创粉丝点击