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
小甲鱼棒棒