c语言中MAXINE,数据结构c语言大神帮我看看 voidgetelem(linkl 爱问知识人

大神帮我看看   void getelem(linklist &l, int i, elemtype &e)   //查找元素

这个查找函数哪里出了问题   不能读取到链表了   直接是指向NULL

还是我的写法会  偏向c 吗?   我是用c语言的<

大神帮我看看   void getelem(linklist &l, int i, elemtype &e)   //查找元素

这个查找函数哪里出了问题   不能读取到链表了   直接是指向NULL

还是我的写法会  偏向c 吗?   我是用c语言的

#include

#include

typedef int elemtype;

typedef struct yy

{

int data;      //数据域

struct yy *next;    //指针域

}yy, *linklist;

void Init_L(linklist &l)  //创建一个指向NULL的头指针

{

l = (yy *)malloc(sizeof(yy));

if (!l)printf("内存申请失败");

l->data = 0;

l->next = NULL;

}

void getelem(linklist &l, int i, elemtype &e)   //查找元素

{   //当第i个元素存在时,其值赋值给e

linklist p;

elemtype j = 1;

p = l;

while (p&&j next;

j;

}

if (!p || j>i)

printf("找不到该元素");    //找不到第i个元素

else

e = p->data;   //找到第i个元素赋给e

}

void listinsert_l(linklist &l, int i,elemtype &e)   //插入元素

{  //在带头结点的单链表L中第i个位置插入e的值

linklist p, s;            //struct yy *p, *s;

int j = 0;

p = l;

while (p != NULL&&j next;

j;

}

if (!p || j > i - 1)

printf("超出范围!");

s = (yy *)malloc(sizeof(yy));

s->data = e;//scanf("%d", &s->data);

s->next = p->next;

p->next = s;

}

void listdelete(linklist &l, int i, elemtype &e)    //删除元素

{  //删除第i个元素,并赋值给e返回

linklist p, s;

int j = 0;

p = l;

while (p&&j next;

j ;

}

if (!p&&j>i - 1)

printf("删除位置不合理");

s = p->next;

p->next = s->next;

e = s->data;

free(s);    //释放s

}

int main()

{

linklist l,p;

int i,e,el;

Init_L(l);      //创建一个空链表

for (i = 1; i next;          //p = l;

while (l!=NULL)  //l->next!=NULL

{

printf("]", l->data);

l=l->next;

}

//printf("

删除元素为:%d", e);    //输出删除的那个元素

getelem(l, 3, el);    //查找元素

printf("%d", el);     //输出也查找到的元素

getchar();

}

展开

全部

你可能感兴趣的:(c语言中MAXINE)