单链表、指针问题
时间:2010-07-26
来源:互联网
本帖最后由 fjianjiang 于 2010-07-26 22:36 编辑
最近在复习DS,在单链表问题上实现一下其中的算法。。问题是在插入结点函数与遍历链表函数中,总是提示指针不匹配(红色注释字符区语句),请大伙帮忙看一下:
定义的数据类型如下:
#include "stdio.h"
#include "stdlib.h"
typedef int ElemType;
typedef struct{
ElemType data; //数据域
struct LNode *next; //指针域
}LNode;
typedef LNode *LinkList; //单链表类型名
typedef int State;
State InitList_Link(LinkList L)//初始化单链表;
/*生成一个新结点作为头结点,设置头结点指针域为空*/
{
if(1)
{
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
return 1;
}
else
{
return 0;
}
}
void WarnMessage(char *s)
{
printf(s);
}
State ListInsert_Link(LinkList L,int i,ElemType e)//在单链表中插入元素;
/*在单链表L中第i个位置之前插入值e的结点,1<=i<=表长+1;*/
{
int k,len_Link;
LinkList p = L;
while(p->next && (k<i-1))/*寻找第i个结点*/
{
++k;
}
if(!p || (k > i-1)) /*如果i<1或者大于表长,则出错*/
{
WarnMessage("Input Error,Insert Failed!\n");
return 0;
}
else /*否则,生成一个新结点(申请新内存空间),插入结点*/
{
LinkList q = (LinkList)malloc(sizeof(LNode));/*为新结点分配内存空间*/
q->data = e;
q->next = p->next;
p->next = q; /*warning: assignment from incompatible pointer type|*/
return 1;
}
}
void LNode_Traver(LinkList L)
/*从头结点开始遍历整个链表*/
{
LinkList p=L;
while(NULL != p->next)
{
printf("%d-->",p->data);
p = p->next; /*warning: assignment from incompatible pointer type|*/
}
}
int main(void)
{
//init the LNode_Link
printf("Inition the LNode Link:");
printf("\n--------------------\n");
LNode LNOde_L;
int ir = InitList_Link(&LNOde_L);//初始化函数调用
if(ir)
{
WarnMessage("Init OK!\n");
}
else
{
WarnMessage("Init Failed!");
}
printf("\n--------------------\n");
printf("Insert LNode:\n");
int loc_id; //插入的位置
ElemType ins_data; //插入的数值
printf("please input the insert location:");
scanf("%d",&loc_id);
printf("then input the insert data:");
scanf("%d",&ins_data);
int ins_r = ListInsert_Link(&LNOde_L,loc_id,ins_data);
if(ins_r)
{
WarnMessage("Insert Success!\n");
}
printf("you just insert the data:\n");
LNode_Traver(&LNOde_L);
return 0;
}
最近在复习DS,在单链表问题上实现一下其中的算法。。问题是在插入结点函数与遍历链表函数中,总是提示指针不匹配(红色注释字符区语句),请大伙帮忙看一下:
定义的数据类型如下:
#include "stdio.h"
#include "stdlib.h"
typedef int ElemType;
typedef struct{
ElemType data; //数据域
struct LNode *next; //指针域
}LNode;
typedef LNode *LinkList; //单链表类型名
typedef int State;
State InitList_Link(LinkList L)//初始化单链表;
/*生成一个新结点作为头结点,设置头结点指针域为空*/
{
if(1)
{
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
return 1;
}
else
{
return 0;
}
}
void WarnMessage(char *s)
{
printf(s);
}
State ListInsert_Link(LinkList L,int i,ElemType e)//在单链表中插入元素;
/*在单链表L中第i个位置之前插入值e的结点,1<=i<=表长+1;*/
{
int k,len_Link;
LinkList p = L;
while(p->next && (k<i-1))/*寻找第i个结点*/
{
++k;
}
if(!p || (k > i-1)) /*如果i<1或者大于表长,则出错*/
{
WarnMessage("Input Error,Insert Failed!\n");
return 0;
}
else /*否则,生成一个新结点(申请新内存空间),插入结点*/
{
LinkList q = (LinkList)malloc(sizeof(LNode));/*为新结点分配内存空间*/
q->data = e;
q->next = p->next;
p->next = q; /*warning: assignment from incompatible pointer type|*/
return 1;
}
}
void LNode_Traver(LinkList L)
/*从头结点开始遍历整个链表*/
{
LinkList p=L;
while(NULL != p->next)
{
printf("%d-->",p->data);
p = p->next; /*warning: assignment from incompatible pointer type|*/
}
}
int main(void)
{
//init the LNode_Link
printf("Inition the LNode Link:");
printf("\n--------------------\n");
LNode LNOde_L;
int ir = InitList_Link(&LNOde_L);//初始化函数调用
if(ir)
{
WarnMessage("Init OK!\n");
}
else
{
WarnMessage("Init Failed!");
}
printf("\n--------------------\n");
printf("Insert LNode:\n");
int loc_id; //插入的位置
ElemType ins_data; //插入的数值
printf("please input the insert location:");
scanf("%d",&loc_id);
printf("then input the insert data:");
scanf("%d",&ins_data);
int ins_r = ListInsert_Link(&LNOde_L,loc_id,ins_data);
if(ins_r)
{
WarnMessage("Insert Success!\n");
}
printf("you just insert the data:\n");
LNode_Traver(&LNOde_L);
return 0;
}
作者: fjianjiang 发布时间: 2010-07-26
- typedef struct{
- ElemType data; //数据域
- struct LNode *next; //指针域
- }LNode;
- typedef LNode *LinkList; //单链表类型名
- typedef struct node{
- ElemType data; //数据域
- struct node*next; //指针域
- }LNode ,*LinkList; //单链表类型名
作者: peijue 发布时间: 2010-07-26
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28