| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 678 人关注过本帖
标题:哪个看下怎么出错了
只看楼主 加入收藏
hg654321free
Rank: 1
等 级:新手上路
帖 子:15
专家分:5
注 册:2013-4-20
收藏
 问题点数:0 回复次数:1 
哪个看下怎么出错了
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ERROR 0
#define TRUE 1
#define OK 1
#define FALSE 0

typedef int ElemType;
typedef int Status;


typedef struct Node
{
    ElemType data;    //&Ecirc;&yacute;&frac34;&Yacute;&Oacute;ò
    struct Node *next;  //&Ouml;&cedil;&Otilde;&euml;&Oacute;ò
}Node ;

typedef struct Node *LinkList; /*定义LinkList*/

Status visit(ElemType c)
{
    printf("%d", c);
    return OK;
}

/*初始化顺序线性表*/
Status InitList(LinkList *L)
{
    *L=(LinkList)malloc(sizeof(Node));  /*产生头结点,并使L指向此头结点*/

    if(!(*L)) /*存储分配失败*/
    {
        return ERROR;
    }

    (*L)->next=NULL; /*指针域为空*/

    return OK;
}

/*初始条件:顺序线性表L已存在。操作结果:返回L中数据元素个数*/
int ListLength(LinkList L)
{
    int i=0;
    LinkList p=L->next; /* p指向第一个结点*/

    while(p)
    {
        i++;
        p=p->next;
    }

    return i;
}

/*初始条件:顺序纯属表L已存在*/
/*操作结果:依次对L的每个数据元素输出*/
Status ListTraverse(LinkList L)
{
    LinkList p=L->next;

    while(p)
    {
        visit(p->data);
        p=p->next;
    }

    printf("\n");

    return OK;
}

/*随机产生n个元素的值,建立带头结点的单链表线性表L (尾插法)*/
void CreateListTail(LinkList *L, int n)
{
    LinkList p,r;
    int i;

    srand(time(0));       /*初始化随机数种子*/
    *L = (LinkList)malloc(sizeof(Node)); /*L为整个线性表*/
    r=*L                              /*r为指向尾部结点*/

    for(i=0;i<n;i++)
    {
        p = (Node *)malloc(sizeof(Node)); /*生成新结点*/
        p->data = rand()%100+1;        /*随机生成100以内的数字*/
        r->next=p;            /*将表尾终端点的指针指向新结点*/
        r=p;                  /*将当前的新结点定义为表尾终端结点*/
    }

    r->next=NULL;       /*表示当前链表结点*/
    //创建有环链表
    //r->next=p;
}

Status GetMidNode(LinkList L, ElemType *e)
{
    LinkList search, mid;
    mid = search = L;

    while(search->next != NULL)
    {
        //search移动的速度是 mid的2倍
        if (search->next->next != NULL)
        {
            search = search->next->next;
            mid = mid->next;
        }
        else
        {
            search = search->next;
        }
    }

    *e = mid->data;

    return OK;
}

/*
int CreateListHead(LinkList *L, int n)
{
    LinkList p,r;
    int i=1;

    srand(time(0));       //初始化随机种子

    (*L) = (LinkList)malloc(sizeof(struct Node));        //先建立一个带头结点的单链表

    if((*L) == NULL)

    {

        fprintf(stderr, "malloc() error.\n");

        return ERROR;

    }

    (*L)->next = NULL;




    r=*L;      //尾部结点

    for(i=0; i<n; i++)
    {
        p=(Node *) malloc(sizeof(Node));
        p->data=rand()%100+1;
        r->next =p;
        r=p;
    }

    r->next = NULL;                                        //表示当前链表结束



    return OK;




}

int ClearList(LinkList *L)
{
    LinkList p,q;

    p=(*L)->next;

    while(p)
    {
        q=p->next;
        free(p);
        p=q;
    }

    (*L)->next=NULL;

    return OK;
}

int printList(LinkList L)

{

    LinkList p;

    p = L->next;

    if(p == NULL)

    {

        printf("链表为空.\n");

        return ERROR;

    }

    while(p)

    {

        printf("%d ", p->data);

        p = p->next;

    }

    printf("\n");



    return OK;

}
*/

int main()
{
    LinkList L;
    Status i;
    char opp;
    ElemType e;
    int find;
    int tmp;

    i=InitList(&L);
    printf("初始化L后: ListLength(L)=%d\n", ListLength(L));
    while(opp != '0')
    {
        scanf("%c",&opp);
        switch(opp)
        {
            case '1':
                ListTraverse(L);
                printf("\n");
                break;

            case '2':
                CreateListTail(&L,20);
                printf("整体创建L的元素(尾插法):\n");
                ListTraverse(L);
                printf("\n");
                break;

            case '3':
                //clearList(pHead);   //清空链表
                printf("ListLength(L)=%d \n",ListLength(L));
                printf("\n");
                break;

            case '4':
                //GetNthNodeFromBack(L,find,&e);
                GetMidNode(L, &e);
                printf("链表中间结点的值为:%d\n", e);
                //ListTraverse(L);
                printf("\n");
                break;

            case '0':
                exit(0);
        }
    }

 /*   printf("Hello world!\n");

    CreateListHead(&L,100);
    printList(L);

    */
    return 0;
}
怎么编译不通过呀?
2013-04-27 19:40
hg654321free
Rank: 1
等 级:新手上路
帖 子:15
专家分:5
注 册:2013-4-20
收藏
得分:0 
  r=*L                              /*r为指向尾部结点*/

    少个分号 ;
2013-04-27 20:54
快速回复:哪个看下怎么出错了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.058824 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved