122691411 发表于 2017-2-6 18:47
//用鱼币买了课件为了验证看到视频里面的错误。。。
小甲鱼老师, 您在使用快指针和慢指针 获取单链表中间 ...
,, 由于不能截图,,, 所以只能这样了,,。尬
请问这个代码在VC++6.0里边能执行吗?为啥我在VC++6.0里边不认识这个 malloc函数
我这哪里不对呢?求解,为什么就是出不来。
#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;
}
}
}
0.0没钱
鱼币怎么搞
关盘多少钱呢》?
怎么赚鱼币啊{:9_234:}
非常感谢小甲鱼老师!!!!非常感谢小甲鱼老师!!!!
赚取鱼币,也是一种技巧啊!太贵,伤不起!
这么贵的鱼币有点恶心
感谢
感谢
可惜我没有鱼币
视频很不错就是源码要VIP学生党买不动啊
赞一个!!!!!!
好贵,需要鱼币下载!!!
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;
}
原程序中的这两个函数我标注原因不明的地方有问题,望老湿指点一二
刚学数据结构,看看。
支持支持
小甲鱼棒棒