ab156506 2016-11-03 12:58 采纳率: 0%
浏览 895

单链表前面的函数如何通过最后的case语句实现调用

#include
#include
#include
#include
#define OK 1
#define ERROR 0
typedef int Status;
typedef char ElemType;

typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
//单链表的初始化
Status InitList(LinkList &L)
{
L=new LNode;
L->next=NULL;
return OK;
}
//单链表的建立
void CreateList_R(LinkList &L,int n)
{
LinkList p;
L=new LNode;
L->next=NULL;
LinkList q=L;
int i;
for(i=0;i {
p=new LNode;
cin>>p->data;

p->next=NULL;
q->next=p;
q=p;
}
}

//单链表的取值
Status GetElem(LinkList L,int i,ElemType &e)
{
LinkList p=L->next; int j=1;
while(p&&j {
p=p->next;
++j;
}
if(!p||j>i)return ERROR;
e=p->data;
return OK;
}
//单链表的按值查找
LNode *LocateElem(LinkList L,ElemType e)
{
LinkList p=L->next;
while (p && p->data!=e)
p=p->next;
return p;
}
//单链表的按位置删除
Status ListDelete(LinkList &L,int i)
{
LinkList p=L; int j=0;
while((p->next) && (j {p=p->next;++j;}
if(!(p->next)||(j>i-1)) return ERROR;
LinkList q=p->next;
p->next=q->next;
delete q;
return OK;
}

//单链表的遍历
Status PrintLink(LinkList L)
{
LinkList P = L->next;
while (P != NULL)
{
printf("%d ",P->data);
P = P->next;
}

printf("\n");
return OK;
}

//单链表的表长
int Length(LinkList L)
{
LinkList p=L->next;int i=0;
while (p)
{
i++;
p=p->next;
}
return i;
}
//单链表的销毁
void DestroyList(LinkList &L)
{
LinkList p;
LinkList q;
p=L;
q=p->next;
while(p!=NULL)
{
free(p);
p=q;
q=p->next;
}
}

void main(int argc, char* argv[])
{
LinkList MyList;
ElemType x;
int pos,y;
int c;
int n1;
while(true)
{
printf("------单链表的基本操作------------\n");
printf("------1.单链表的初始化------------\n");
printf("------2.线性表的建立---------------\n");
printf("------3.线性表的遍历---------------\n");
printf("------4.线性表的按位置插入---------\n");
printf("------5.线性表的表长---------------\n");
printf("------6.线性表按位置删除------------\n");
printf("------7.按位置查询线性表的元素------\n");
printf("------8.退出------------------------\n");
printf("请输入要操作的步骤:\n");

    scanf("%d",&c);
    switch(c){
    case 1:
        if(InitList(MyList)==OK)
        {
            printf("线性表初始化成功!\n");
        }
        else
            printf("线性表初始化失败!\n");
        break;
    case 2:
        CreateList_R(MyList)
        break;
    case 3:
        Printout(MyList);
        break;
    case 4:
        printf("请输入你要插入的数据:");
        scanf("%d",&x);
        printf("请输入你要插入的位置:");
        scanf("%d",&pos);
        if(ListInsert(MyList,pos,x)==OK)
        {
             printf("插入成功:\n");
             printf("插入后的数据为:\n");
             Printout(MyList);
        }
        else
        {
            printf("插入失败:\n");
        }
        break;
    case 5:
        n1=ListLength(MyList);
        printf("线性表的长度%d\n",n1);
        break;
    case 6:
        printf("请输入你要删除元素的位置:");
        scanf("%d",&y);
        if(ListDelete(MyList,y)==OK)
        {
            printf("\n线性表删除成功\n");
            printf("线性表删除后的数据:\n");
            Printout(MyList);
        }
        else
            printf("删除失败:\n");
        break;
    case 7:
        printf("你选择数据的位置是:");
        scanf("%d",&n1);
        if(GetElem(MyList,n1,x)==ERROR)
            printf("i值不合法/n");
        else
            printf("第%d个元素的值为%d\n",n1,x);
        break;
     case 8:
         exit(OK);
     default:
        printf("输入错误!");
    }
}

}

  • 写回答

2条回答 默认 最新

  • threenewbee 2016-11-03 13:05
    关注

    CreateList_R(MyList)
    少了分号。

    评论

报告相同问题?

悬赏问题

  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退
  • ¥20 win系统的PYQT程序生成的数据如何放入云服务器阿里云window版?
  • ¥50 invest生境质量模块
  • ¥15 nhanes加权logistic回归,svyglm函数
  • ¥15 Yolo识别出的坐标的模拟鼠标应用问题