当前位置:编程学习 > C#/ASP.NET >>

请高手奖空缺填好谢谢

Status comp(ElemType c1,ElemType c2)
 { /* 数据元素判定函数(相等为TRUE,否则为FALSE) */
  if(c1==c2)
  return TRUE;
  else
  return FALSE;
 }

 void visit(ElemType &c) //
 {
  //printf("%d->",c);

 }  


//单链表线性表基本操作(12个) */
 Status InitList(LinkList &L)
 { /* 操作结果:构造一个空的线性表L */
  L=(LinkList)malloc(sizeof(struct LNode)); /* 产生头结点,并使L指向此头结点 */
  if(!L) /* 存储分配失败 */
  return OVERFLOW;
  L->next=NULL; /* 指针域为空 , L->next等价(*L).next */
  return OK;
 }

 Status DestroyList(LinkList &L)
 { /* 初始条件:线性表L已存在。操作结果:销毁线性表L */
  LinkList q;
  while(L)
  {
  q=L->next;
  free(L);
  L=q;
  }
  return OK;
 }

 Status ClearList(LinkList L) /* 不改变L */
 { /* 初始条件:线性表L已存在。操作结果:将L重置为空表 */
  LinkList p,q;
  p=L->next; /* p指向第一个结点 */
  while(p) /* 没到表尾 */
  {
  q=p->next;
  free(p);
  p=q;
  }
  L->next=NULL; /* 头结点指针域为空 */
  return OK;
 }

 Status ListEmpty(LinkList L)
 { /* 初始条件:线性表L已存在。操作结果:若L为空表,则返回TRUE,否则返回FALSE */
  if(L->next) /* 非空 */
  return FALSE;
  else
  return TRUE;
 }
/*
 int ListLength(LinkList L)
 {????????????????????????????????????????????????????????????????????????????????? //初始条件:线性表L已存在。操作结果:返回L中数据元素个数
   
    
 }
*/

 Status GetElem(LinkList L,int i,ElemType &e) /* 算法2.8 */
 { /* L为带头结点的单链表的头指针。当第i个元素存在时,其值赋给e并返回OK,否则返回ERROR */
  int j=1; /* j为计数器 */
  LinkList p=L->next; /* p指向第一个结点 */
  while(p && j<i) /* 顺指针向后查找,直到p指向第i个元素或p为空 */
  {
  p=p->next;
  j++;
  }
  if(!p || j>i) /* 第i个元素不存在 */
  return ERROR;
  e=p->data; /* 取第i个元素 */
  return OK;
 }

 /*
 int LocateElem(LinkList L,ElemType e,Status(*compare)(ElemType,ElemType))
 { ???????????????????????????????????????????????????????????????????????????????????//初始条件: 线性表L已存在,compare()是数据元素判定函数(满足为1,否则为0)  
  // 操作结果: 返回L中第1个与e满足关系compare()的数据元素的位序。  
  // 若这样的数据元素不存在,则返回值为0  
    
 }
 */

 Status PriorElem(LinkList L,ElemType cur_e,ElemType &pre_e)
 { /* 初始条件: 线性表L已存在 */
  /* 操作结果: 若cur_e是L的数据元素,且不是第一个,则用pre_e返回它的前驱, */
  /* 返回OK;否则操作失败,pre_e无定义,返回INFEASIBLE */
  LinkList q,p=L->next; /* p指向第一个结点 */
  while(p->next) /* p所指结点有后继 */
  {
  q=p->next; /* q为p的后继 */
  if(q->data==cur_e)
  {
  pre_e=p->data;
  return OK;
  }
  p=q; /* p向后移 */
  }
  return INFEASIBLE;
 }

 /*
 Status NextElem(LinkList L,ElemType cur_e,ElemType &next_e)
 { // 初始条件:线性表L已存在  
  //操作结果:若cur_e是L的数据元素,且不是最后一个,则用next_e返回它的后继,  
  // 返回OK;否则操作失败,next_e无定义,返回INFEASIBLE  
    
 }
 */

 Status ListInsert(LinkList L,int i,ElemType e) /* 算法2.9。不改变L */
 { /* 在带头结点的单链线性表L中第i个位置之前插入元素e */
  int j=0;
  LinkList p=L,s;
  while(p&&j<i-1) /* 寻找第i-1个结点 */
  {
  p=p->next;
  j++;
  }
  if(!p||j>i-1) /* i小于1或者大于表长 */
  return ERROR;
  s=new LNode; /* 生成新结点 */
  s->data=e; /* 插入L中 */
  s->next=p->next;
  p->next=s;
  return OK;
 }

 /*
 Status ListDelete(LinkList L,int i,ElemType &e) //算法2.10。不改变L  
 { ??????????????//在带头结点的单链线性表L中,删除第i个元素,并由e返回其值  
    ??????????????
 }
 */

 Status ListTraverse(LinkList L,void(*vi)(ElemType &))
 /* vi的形参类型为ElemType,与bo2-1.c中相应函数的形参类型ElemType&不同 */
 { /* 初始条件:线性表L已存在 */
  /* 操作结果:依次对L的每个数据元素调用函数vi()。一旦vi()失败,则操作失败 */
  printf("L=0x%x\n0x%x { %d , 0x%x }\n",L,L,L->data,L->next);
  LinkList p=L->next;
  while(p)
  {
  vi(p->data);
  printf("0x%x { %d , 0x%x }\n",p,p->data,p->next);
p=p->next;
  }
  return OK;
 }
--------------------编程问答-------------------- 我来错地方了 我以为是C#呢 --------------------编程问答-------------------- 如果是
作业题还是自己写比较好
如果是
面试题,这份工作还是算了吧 --------------------编程问答--------------------
引用 2 楼 hdt 的回复:
如果是
作业题还是自己写比较好
如果是
面试题,这份工作还是算了吧

--------------------编程问答-------------------- 路過不懂。= = --------------------编程问答--------------------
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,