线性链表的基本操作GetElem
我是数据结构的初学者线性链表搞了好长时间还没弄好我不知道GetElem_L(LinklistL,inti,int&e)和GetElem_L(LinklistL,inti,...
我是数据结构的初学者 线性链表搞了好长时间还没弄好
我不知道GetElem_L(Linklist L,int i,int &e) 和 GetElem_L(Linklist L,int i,int *e)的区别
还有 Create_List(Linklist &L,int n) 与 Create_List(Linklist *L,int n)的区别 大家告诉我下哦
下面是我的程序(我的程序运行完 打印n无法得到链表中的数据)
#include<stdio.h>
#include<malloc.h>
#define OK 1
#define ERROR 0
typedef struct LNODE
{
int data;
struct LNODE *link;
}NODE,*Linklist;
int GetElem_L(Linklist L,int i,int &e)
{
int j;
Linklist p;
p = L->link;
j = 1;
while(p && j < i)
{
p = p->link;
++j;
}
if(!p || j > 1)
return ERROR;
e = p->data;
return OK;
}
void Create_List(Linklist &L,int n)
{
L =(NODE *)malloc(sizeof(NODE));
Linklist p;
L -> link = NULL;
for(int i=0; i<n; ++i)
{
p=(NODE *)malloc(sizeof(NODE));
/* if(!p)
{
goto error;
}
/*init node*/
printf("please input the %d-th data\n", i);
scanf("%d", &p->data);
p->link=L->link;
L->link=p;
}
}
//error:
/* free the existing list*/
/* while(head)
{
p = head;
head = head->link;
free(p);
}
*/
void main()
{
Linklist l;
int n,m;
m = 2;
int count=5;
Create_List(l,count);
GetElem_L(l,m,n);
printf("第%d个数字是%d\n",m,n);
}
引用我看过了
大家帮我看下程序啊 我想输出线性链表里的第2个数值 这个程序无法输出想要结果
!!!!!! 展开
我不知道GetElem_L(Linklist L,int i,int &e) 和 GetElem_L(Linklist L,int i,int *e)的区别
还有 Create_List(Linklist &L,int n) 与 Create_List(Linklist *L,int n)的区别 大家告诉我下哦
下面是我的程序(我的程序运行完 打印n无法得到链表中的数据)
#include<stdio.h>
#include<malloc.h>
#define OK 1
#define ERROR 0
typedef struct LNODE
{
int data;
struct LNODE *link;
}NODE,*Linklist;
int GetElem_L(Linklist L,int i,int &e)
{
int j;
Linklist p;
p = L->link;
j = 1;
while(p && j < i)
{
p = p->link;
++j;
}
if(!p || j > 1)
return ERROR;
e = p->data;
return OK;
}
void Create_List(Linklist &L,int n)
{
L =(NODE *)malloc(sizeof(NODE));
Linklist p;
L -> link = NULL;
for(int i=0; i<n; ++i)
{
p=(NODE *)malloc(sizeof(NODE));
/* if(!p)
{
goto error;
}
/*init node*/
printf("please input the %d-th data\n", i);
scanf("%d", &p->data);
p->link=L->link;
L->link=p;
}
}
//error:
/* free the existing list*/
/* while(head)
{
p = head;
head = head->link;
free(p);
}
*/
void main()
{
Linklist l;
int n,m;
m = 2;
int count=5;
Create_List(l,count);
GetElem_L(l,m,n);
printf("第%d个数字是%d\n",m,n);
}
引用我看过了
大家帮我看下程序啊 我想输出线性链表里的第2个数值 这个程序无法输出想要结果
!!!!!! 展开
2个回答
展开全部
GetElem_L函数中“if(!p || j > 1)”中的“1”改为i。
一般参数传递是单向的,为了实现双向传递,有两个办法:一个是C/C++中的指针,另一个就是C++中的引用。
函数参数表中的变量名前加'&'表示该形参是主函数中相应实参的引用,也就是说该形参变量就是主函数中的那个实参变量(它们占用的是同一个存储单元),可理解为在被调用函数中换了个名字(也可能换了个一样的名字)。既然是同一个变量,那么在被调用函数中改变了该变量的值,主函数中变量的值也就改变了。
在参数表中有引用的函数中,将该所有引用变量前+'*',就可直接变为参数表中使用指针的函数,另外主函数传递的参数要相应调整。
例如:
void swap(int &a, int &b){
int c;
c = a; a = b; b = c;
}
void main(){
int x = 1, y = 2;
swap(x , y);
}
void swap(int *a, int *b){
int c;
c = *a; *a = *b; *b = c;
}
void main(){
int x = 1, y = 2;
swap(&x , &y);
}
一般参数传递是单向的,为了实现双向传递,有两个办法:一个是C/C++中的指针,另一个就是C++中的引用。
函数参数表中的变量名前加'&'表示该形参是主函数中相应实参的引用,也就是说该形参变量就是主函数中的那个实参变量(它们占用的是同一个存储单元),可理解为在被调用函数中换了个名字(也可能换了个一样的名字)。既然是同一个变量,那么在被调用函数中改变了该变量的值,主函数中变量的值也就改变了。
在参数表中有引用的函数中,将该所有引用变量前+'*',就可直接变为参数表中使用指针的函数,另外主函数传递的参数要相应调整。
例如:
void swap(int &a, int &b){
int c;
c = a; a = b; b = c;
}
void main(){
int x = 1, y = 2;
swap(x , y);
}
void swap(int *a, int *b){
int c;
c = *a; *a = *b; *b = c;
}
void main(){
int x = 1, y = 2;
swap(&x , &y);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这其中涉及到 C++ 中引用的概念,建议把引用弄得明明白白
就不会有问题了
就不会有问题了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询