122691411 发表于 2017-2-6 18:48:13

122691411 发表于 2017-2-6 18:47
//用鱼币买了课件为了验证看到视频里面的错误。。。
小甲鱼老师, 您在使用快指针和慢指针 获取单链表中间 ...

,, 由于不能截图,,, 所以只能这样了,,。尬

会飞的鱼. 发表于 2017-2-9 09:35:44

请问这个代码在VC++6.0里边能执行吗?为啥我在VC++6.0里边不认识这个 malloc函数

会飞的鱼. 发表于 2017-2-9 20:55:36

我这哪里不对呢?求解,为什么就是出不来。

#include<iostream.h>
#include<stdlib.h>
#include<stdio.h>
#include<time.h>

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define OVERFLOW -2

typedef int Status;
typedef int ElemType;

typedef struct LNode
{
        ElemType data;
        struct LNode *next;

}LNode,*LinkList;

//函数原型说明
Status InitList(LinkList &L);
void CreateListTail(LinkList &L,int n);
Status GetElem(LinkList L,int i,ElemType &e);
int printf(LinkList L);
Status GetMidNode(LinkList L,ElemType &e);
int ListLength(LinkList L);




Status InitList(LinkList &L)//创造一个空的单链表

{
        L=(LinkList)malloc(sizeof(LNode));
        if(!L)
                exit(OVERFLOW);
        L->next=NULL;
        return OK;

}//InitList
void CreateListTail(LinkList &L,int n) //按照尾插法随机插入n个元素
{
        LinkList p,r;
        int i;
        srand(time(0));
        L=(LinkList)malloc(sizeof(LNode));
        r=L;
        for(i=1;i<=n;i++)
        {
                p=(LinkList)malloc(sizeof(LNode));
                p->data=rand()%100+1;
                r->next=p;
                r=p;
        }
        r->next=NULL;

}
int ListLength(LinkList L)//单链表的长度
{
        int i=0;
        LinkList p=L->next;
        while(p)
        {
                p=p->next;
                i++;
        }
        return i;
}
Status GetElem(LinkList L,int i,ElemType &e) //返回第i个元素
{
        if(!L)
                return ERROR;
        LinkList p;
        int j;
        p=L->next;
       
        while(p&&j<i)
        {

                p=p->next;
                j++;
        }
        if(!p||j>i)
                return ERROR;
        e=p->data;
        return OK;

}//GetElem


int printf(LinkList L)//输出单链表的元素
{
        if(!L)
                return ERROR;
        LinkList p;
        p=L->next;
        while(p!=NULL)
        {
                printf("%d",p->data);
                p=p->next;
        }
        return OK;
}//output

Status GetMidNode(LinkList L,ElemType &e)//查找中间元素
{
        if(!L)
                return ERROR;
        LinkList mid,search;
        mid=search=L->next;
        while(search->next->next!=NULL)
        {
                mid=mid->next;
                search=search->next->next;
        }
        e=mid->data;
        return OK;

}
void main()
{
        LinkList L ;
        int i,n=6;
        int s;
        ElemType e;
        InitList(L);
        cout<<"请输入您选择的项目:"<<"1.创建链表\n"<<"2.查看链表\n"<<"3.链表长度\n"<<"4.中间元素\n"<<"0.退出\n";
        while(s!='0')
        {

   
    cin>>s;
        switch(s)
        {
        case 1: CreateListTail(L,n); break;
        case 2: printf(L); break;
        case 3: ListLength(L); break;
        case 4: GetMidNode(L,e); break;
        case 0: exit(0);break;
        case 5: GetElem(L,i,e); break;
        }
        }
       
}

Kaka平 发表于 2017-2-13 21:26:25

0.0没钱

yangwtk 发表于 2017-2-20 08:40:22

鱼币怎么搞

yanyingnan1357 发表于 2017-2-22 18:47:08

关盘多少钱呢》?

葛大大 发表于 2017-3-13 12:51:03

怎么赚鱼币啊{:9_234:}

唐长老学C++ 发表于 2017-3-19 13:58:32

非常感谢小甲鱼老师!!!!非常感谢小甲鱼老师!!!!

Edgar36 发表于 2017-4-11 10:56:47

赚取鱼币,也是一种技巧啊!太贵,伤不起!

jaking 发表于 2017-5-16 16:46:40

这么贵的鱼币有点恶心

a646465071 发表于 2017-7-3 12:05:57

感谢

考研狗 发表于 2017-7-4 17:46:19

感谢

大梦STzen 发表于 2017-7-22 14:55:40

可惜我没有鱼币

你吹空调外机 发表于 2017-10-5 21:34:26

视频很不错就是源码要VIP学生党买不动啊

落笔苍穹 发表于 2017-10-15 15:46:37

赞一个!!!!!!

DuanD 发表于 2017-10-30 21:11:01

好贵,需要鱼币下载!!!

圣狄雅哥 发表于 2017-11-29 22:49:23

Status GetMidNode(LinkList L, ElemType *e)   // 这里只能用(*e),且不能拿这个函数直接返回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;
}

。。。。。。

Status InitList(LinkList *L)    // 这里只能用(*L),原因未知;其他函数可以用L
{
    *L=(LinkList)malloc(sizeof(Node)); /* 产生头结点,并使L指向此头结点 */

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

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

    return OK;
}
原程序中的这两个函数我标注原因不明的地方有问题,望老湿指点一二

wyh150 发表于 2018-2-13 18:51:17

刚学数据结构,看看。

七月の翼 发表于 2018-3-15 20:25:27

支持支持

yutadelibie 发表于 2018-5-13 15:06:50

小甲鱼棒棒
页: 1 2 3 4 [5] 6 7
查看完整版本: 第十六讲 线性表11(视频+课件+源代码)