大神帮我看看 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();
}
展开
全部