广工anyview数据结构-04~06(乱码不贴)

这篇博客详细介绍了链栈、链队列和链表的相关操作,包括链栈的取栈顶元素、链队列的判空和求长度、循环链队列的初始化、入队、出队、链表的判空、销毁、清空、求长度、插入和删除等基本操作。此外,还提供了顺序表的直接插入排序、冒泡排序和计数排序的实现,以及哈希表的构造和冲突处理方法。这些算法是数据结构与算法学习中的基础内容,对于理解和实现数据结构操作至关重要。
摘要由CSDN通过智能技术生成
/**********
【题目】试写一算法,实现链栈的判空操作。
链栈的类型定义为:
typedef struct LSNode {
  ElemType data;       // 数据域
  struct LSNode *next; // 指针域
} LSNode, *LStack;    // 结点和链栈类型
***********/
Status StackEmpty_L(LStack S)
/* 对链栈S判空。若S是空栈,则返回TRUE;否则返回FALSE */
{
   if(NULL==S) return TRUE;
   return FALSE;

}


/**********
【题目】试写一算法,实现链栈的取栈顶元素操作。
链栈的类型定义为:
typedef struct LSNode {
  ElemType data;       // 数据域
  struct LSNode *next; // 指针域
} LSNode, *LStack;    // 结点和链栈类型
***********/
Status GetTop_L(LStack S, ElemType &e) 
/* 取链栈S的栈顶元素到e,并返回OK; */
/* 若S是空栈,则失败,返回ERROR。  */
{
    if(NULL==S)return ERROR;
    e=S->data;
    S=S->next;
    return OK;
}




/**********
【题目】试写一算法,实现链队列的判空操作。
链队列的类型定义为:
typedef struct LQNode {     
  ElemType  data;  
  struct LQNode  *next;  
} LQNode, *QueuePtr; // 结点和结点指针类型
typedef struct {     
  QueuePtr  front;  // 队头指针
  QueuePtr  rear;   // 队尾指针
} LQueue;  // 链队列类型
***********/
Status QueueEmpty_LQ(LQueue Q)
/* 判定链队列Q是否为空队列。           */
/* 若Q是空队列,则返回TRUE,否则FALSE。*/
{
   if(Q.front==Q.rear&&Q.front==NULL) return TRUE;
   return FALSE;
}



/**********
【题目】试写一算法,实现链队列的求队列长度操作。
链队列的类型定义为:
typedef struct LQNode {     
  ElemType  data;  
  struct LQNode  *next;  
} LQNode, *QueuePtr; // 结点和结点指针类型
typedef struct {     
  QueuePtr  front;  // 队头指针
  QueuePtr  rear;   // 队尾指针
} LQueue;  // 链队列类型
***********/
int QueueLength_LQ(LQueue Q)
/* 求链队列Q的长度并返回其值 */
{
   int length=1;
   LQNode *p;
   if(Q.front==Q.rear&&Q.rear==NULL)return 0;
   if(Q.front==Q.rear&&Q.rear!=NULL)return 1;
   while(Q.rear!=Q.front){
     p=Q.front;
     Q.front=p->next;
     length++;
     }
   return length;  
}




/**********
【题目】假设以带头结点的循环链表表示队列,并且
只设一个指针指向队尾元素结点(注意不设头指针),
试编写相应的队列初始化、入队列和出队列的算法。
带头结点循环链队列CLQueue的类型定义为:
typedef struct LQNode {
  ElemType data;
  struct LQNode *next;
} LQNode, *CLQueue;
**********/
Status InitCLQueue(CLQueue &rear) // 初始化空队列

    rear = (LQNode*)malloc(sizeof(LQNode));
    rear->next = rear;
    return OK;
}


Status EnCLQueue(CLQueue &rear, ElemType x) // 入队

    LQNode *p;
    p = (LQNode*)malloc(sizeof(LQNode));
    p->data = x;
    p->next = rear->next;
    rear->next = p;
    rear = p;
    return OK;
}


Status DeCLQueue(CLQueue &rear, ElemType &x) // 出队

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值