⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lqol.c

📁 广工--数据结构的课程设计 郑纬民教授版 图的十字链表实现 图的邻接表实现
💻 C
字号:

 int LocateElem(LinkList L,ElemType e,Status(*compare)(ElemType,ElemType))
 { /* 初始条件:线性表L已存在,compare()是数据元素判定函数(满足为1,否则为0)*/
   /* 操作结果:返回L中第1个与e满足关系compare()的数据元素的位序. */
   /*           若这样的数据元素不存在,则返回值为0   */
   int i=0;
   LinkList p=L;
   while(p)
   {
     i++;
     if(compare(p->data,e)) /* 找到这样的数据元素 */
       return i;
     p=p->next;
   }
   return 0;
 }

 Status ListDelete(LinkList *L,int i,ElemType *e)
 { /* 在不带头结点的单链线性表L中,删除第i个元素,并由e返回其值 */
   int j=1;
   LinkList p=*L,q;
   if(i==1) /* 删除第1个结点 */
   {
     *L=p->next; /* L由第2个结点开始 */
     *e=p->data;
     free(p); /* 删除并释放第1个结点 */
   }
   else
   {
     while(p->next&&j<i-1) /* 寻找第i个结点,并令p指向其前驱 */
     {
       p=p->next;
       j++;
     }
     if(!p->next||j>i-1) /* 删除位置不合理 */
       return ERROR;
     q=p->next; /* 删除并释放结点 */
     p->next=q->next;
     *e=q->data;
     free(q);
   }
   return OK;
 }

void InitQueue(LinkQueue *Q)
 { /* 构造一个空队列Q */
   (*Q).front=(*Q).rear=(QueuePtr)malloc(sizeof(QNode));
   if(!(*Q).front)
     exit(OVERFLOW);
   (*Q).front->next=NULL;
 }

 Status QueueEmpty(LinkQueue Q)
 { /* 若Q为空队列,则返回TRUE,否则返回FALSE */
   if(Q.front->next==NULL)
     return TRUE;
   else
     return FALSE;
 }

 void EnQueue(LinkQueue *Q,QElemType e)
 { /* 插入元素e为Q的新的队尾元素 */
   QueuePtr p=(QueuePtr)malloc(sizeof(QNode));
   if(!p) /* 存储分配失败 */
     exit(OVERFLOW);
   p->data=e;
   p->next=NULL;
   (*Q).rear->next=p;
   (*Q).rear=p;
 }

 Status DeQueue(LinkQueue *Q,QElemType *e)
 { /* 若队列不空,删除Q的队头元素,用e返回其值,并返回OK,否则返回ERROR*/
   QueuePtr p;
   if((*Q).front==(*Q).rear)
     return ERROR;
   p=(*Q).front->next;
   *e=p->data;
   (*Q).front->next=p->next;
   if((*Q).rear==p)
     (*Q).rear=(*Q).front;
   free(p);
   return OK;
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -