怎样在C语言中正确运用链表??链表的使用需要注意哪些要点?? 5
3个回答
TableDI
2024-07-18 广告
2024-07-18 广告
VLOOKUP函数是Excel中用于数据匹配的重要工具。其使用方法是:在个参数中输入要查找的值,第二个参数是包含数据的范围或表格,第三个参数指定返回数据的列号,第四个参数(可选)决定查找方式(0为精确匹配,其他为近似匹配)。例如,假设我们想...
点击进入详情页
本回答由TableDI提供
展开全部
以单链表而言:
1.每个节点需要使用指针来指向下一个节点,比如 struct node*next,若是没有后继节点了,记得设置当前节点的next为NULL。
链表需要记住头结点。
2.每个节点需要分配内存,使用malloc函数,注意判断内存是否分配成功,做好防错处理。
3.添加节点到链表的时候,需要找出插入点的前驱和后继。假设需要在p节点之前插入新节点t,q是p的前驱(即q->next=p),则q->next=s;s->next=p;可以画草图示意这个过程,加强理解。
4.删除节点的时候,需要把删除节点的前驱和后继连起来。假设需要删掉p节点,q是p的前驱(即q->next=p),则q->next=p->next;free(p);
先熟悉这些,多上机练习,然后再找些做做强化下。
1.每个节点需要使用指针来指向下一个节点,比如 struct node*next,若是没有后继节点了,记得设置当前节点的next为NULL。
链表需要记住头结点。
2.每个节点需要分配内存,使用malloc函数,注意判断内存是否分配成功,做好防错处理。
3.添加节点到链表的时候,需要找出插入点的前驱和后继。假设需要在p节点之前插入新节点t,q是p的前驱(即q->next=p),则q->next=s;s->next=p;可以画草图示意这个过程,加强理解。
4.删除节点的时候,需要把删除节点的前驱和后继连起来。假设需要删掉p节点,q是p的前驱(即q->next=p),则q->next=p->next;free(p);
先熟悉这些,多上机练习,然后再找些做做强化下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
typedef int datatype;
typedef struct{
datatype list[maxsize];
int size;
}seqlist;
void initiate(seqlist *&l) //初始化
{
l=(seqlist*)malloc(sizeof(seqlist));
l->size=0;
}
int insert (seqlist *l,int i,datatype x) //插入结点
{
int j;
if(l->size>=maxsize)
{
printf("表已满无法插入!\n");
return 0;
}
else if(i<0||i>l->size)
{
printf("参数i不合法!");
return 0;
}
else
{
for(j=l->size;j>i;j--) l->list[j]=l->list[j-1];
l->list[i]=x;
l->size++;
return 1;
}
}
int del(seqlist *&l,int i,datatype &x) //删除结点
{
int j;
if(l->size<=0)
{
printf("表已空无法删除!");
return 0;
}
else if(i<0||i>l->size)
{
printf("参数i不合法!");
return 0;
}
else
{
x=l->list[i];
for(j=i+1;j<=l->size-1;j++)
l->list[j-1]=l->list[j];
l->size--;
return 1;
}
}
int lfind(seqlist l,datatype x) //查找结点
{
int i=0;
while(i<=l.size&&l.list[i]!=x) i++;
if(i>l.size) return -1;
else return i;
}
typedef struct{
datatype list[maxsize];
int size;
}seqlist;
void initiate(seqlist *&l) //初始化
{
l=(seqlist*)malloc(sizeof(seqlist));
l->size=0;
}
int insert (seqlist *l,int i,datatype x) //插入结点
{
int j;
if(l->size>=maxsize)
{
printf("表已满无法插入!\n");
return 0;
}
else if(i<0||i>l->size)
{
printf("参数i不合法!");
return 0;
}
else
{
for(j=l->size;j>i;j--) l->list[j]=l->list[j-1];
l->list[i]=x;
l->size++;
return 1;
}
}
int del(seqlist *&l,int i,datatype &x) //删除结点
{
int j;
if(l->size<=0)
{
printf("表已空无法删除!");
return 0;
}
else if(i<0||i>l->size)
{
printf("参数i不合法!");
return 0;
}
else
{
x=l->list[i];
for(j=i+1;j<=l->size-1;j++)
l->list[j-1]=l->list[j];
l->size--;
return 1;
}
}
int lfind(seqlist l,datatype x) //查找结点
{
int i=0;
while(i<=l.size&&l.list[i]!=x) i++;
if(i>l.size) return -1;
else return i;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询