怎样用C语言实现数据结构中的int GetElem(SqList L,int i,int *e)算法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样用C语言实现数据结构中的int GetElem(SqList L,int i,int *e)算法相关的知识,希望对你有一定的参考价值。

typedef struct
int *elem;
int length;
int listsize;
SqList;
int GetElem(SqList L,int i,int *e) //取顺序表中第 i 个元素

if(L.elem)
return OVERFLOW;
if((i>L.length)&&(i<=0))
return ERROR;
*e=L.elem[i-1];
return OK;

想在main函数中调用GetElem,并用printf("顺序表中第 %d 个元素为 %d\n",k,*p1)输出,该怎样做?

参考技术A 你的GetElem()函数有错误,第二个 if 中,应该是 if(i < 1 || i>L.length) ,其中1表示第一个元素。
这是我看到的问题。

c语言中怎样通过索引获取结构体成员的值

c语言中怎样通过索引获取结构体成员的值c语言中怎样通过索引获取结构体成员的值。例如: struct Test char a; int b; int c;,当然成员变量的类型是不确定的。我怎样才能实现通过索引值来获取成员变量的值,比如我要访问a,则给出的是索引值1,访问数据结构成员b,则给出2即可,以此类推。求大侠们帮帮忙。先谢过了。

也许你可以定义一个数组,数组的值是结构体各个成员在结构体中的偏移位置,如
const int offset[] = 0, sizeof(char), sizeof(char)+sizeof(int);
struct Test a;
那么访问第一个数据可以
char num1 = *(char*)((char*)&a + offset[0]);
int num2 = *(int*)((char*)&a + offset[1]);
int num3 = *(int*)((char*)&a + offset[2]);
参考技术A 你可以通过switch实现,每个case时注意成员类型。 参考技术B 不可能!

以上是关于怎样用C语言实现数据结构中的int GetElem(SqList L,int i,int *e)算法的主要内容,如果未能解决你的问题,请参考以下文章

C语言中怎样实现对数组数据的删除、修改?

怎样用c语言实现平均值?

c语言中怎样通过索引获取结构体成员的值

怎样用c语言实现取一个数字的个位

C语言中怎样实现对数组数据的删除、修改?

C语言中怎样实现对数组数据的删除、修改?