新手求教链表的插入

EmbeddedLong 2012-03-06 04:21:07


void Insert_LinkList(NODE *head, NODE *pnew, int i)
{
NODE *p;
int j;
p = head;
for (j = 0; j < i && p != NULL; j++) //将p指向要插入的第i个节点
p = p->next;
if (p == NULL) //表明链表中第i个节点不存在
{
printf ("the %d node not foundt!\n", i);
return;
}
pnew->next = p->next ; //将插入节点的指针域指向第i个节点的后继节点
p->next = pnew; //将第i个节点的指针域指向插入节点
}

网上找的一个链表插入的函数,不知道怎么用,函数的意思我懂。
比如我在我的程序里面做一个插入一个数据 怎么办

#include<stdio.h>
#include<stdlib.h>
#include"def.h"
struct Grade_Info
{
int score;
struct Grade_Info *next;
};
typedef struct Grade_Info NODE,*PNODE;
NODE *Create_LinkList ();
void Display_LinkList(NODE *head) ;
void Insert_LinkList(NODE *head, NODE *pnew, int i);

void Display_LinkList(NODE *head)
{
NODE *p;
for (p = head->next; p != NULL; p = p->next)
printf ("%d ", p->score);
printf ("\n");
}
int main()
{
PNODE pHead=NULL;
PNODE pnew=NULL;


pHead=Create_LinkList();
printf("开始的数据:");
Display_LinkList(pHead);

Insert_LinkList(pHead, pnew, 2);
printf("添加后的数据:");
Display_LinkList(pHead);
return 0;
}


我自己写了个插入的 ,编译没什么问题,运行的时候就保存了,估计是调用不对吧。我也没明白那个插入的程序他怎么找到新的结点呢?pnew?然后在后面插入呢?
...全文
61 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjh333x 2012-03-06
  • 打赏
  • 举报
回复
你要插入的节点没创建啊,应该让pnew指向它
从头来过 2012-03-06
  • 打赏
  • 举报
回复
看一下链表的结构,节点的结构
码上大侠 2012-03-06
  • 打赏
  • 举报
回复
pnew指向你要插入的新结点,不应该是空指针。而且你既然要插入到第二个结点,说明链表已经存在第一个结点了,也是不能为空的。
PNODE pHead=NULL;
PNODE pnew=NULL;
这两句话语法上没错,但是逻辑上是错误的

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧