帮忙看看这个单链表的程序

dlb2046 2010-05-06 04:13:48
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int num;
struct node *next;
}list;
list *init(list *head)//初始化
{
head=(list *)malloc(sizeof(list));
head->next=NULL;
return head;
}
void creat(list *head,int n)//创建链表
{
list *p,*newl;
int i;
p=head;
for(i=0;i<n;i++)
{
newl=(list *)malloc(sizeof(list));
scanf("%d",&newl->num);
p->next=newl;
p=newl;
}
p->next=NULL;
}
void showlist(list *head)//遍历
{
head=head->next;
while(head)
{
printf("%d ",head->num);
head=head->next;
}
}
void insert(list *head,int n,int num)//插入
{
list *newl;
int i;
newl=(list *)malloc(sizeof(list));
for(i=0;i<n;i++)
{
head=head->next;
}
newl->next=head;
head=newl;
}
int main(void)
{
list *head;
head=init(head);
creat(head,5);
printf("初始化的链表: ");
showlist(head);
insert(head,3,7);//第三节点处插入7
printf("插入后链表: ");
showlist(head);
return 0;
}
我输入1 2 3 4 5,输出还是1 2 3 4 5,没有实现插入的功能,不知道问题出在哪里,谢谢大家帮忙啊
...全文
45 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dlb2046 2010-05-06
  • 打赏
  • 举报
回复
谢谢两位的解答啊,哎,还是我自己太粗心了
askyouque 2010-05-06
  • 打赏
  • 举报
回复

bool insert(list *head,int n,int num)//插入
{
list *newl,*p;
int i;
p=head;//用p来找到药插入的地方
newl=(list *)malloc(sizeof(list));
for(i=0;i<n;i++)
{
if(p)//验证n不会比总节点数大
p=p->next;
else
return false;
}
返回值改了下,你不改也行
newl->next=p->next;
p->next=newl;
return true;
}

askyouque 2010-05-06
  • 打赏
  • 举报
回复

bool insert(list *head,int n,int num)//插入
{
list *newl,*p;
int i;
p=head;//用p来找到药插入的地方
newl=(list *)malloc(sizeof(list));
for(i=0;i<n;i++)
{
if(p)//验证n不会比总节点数大
p=p->next;
else
return false;
}

newl->next=p->next;
p->next=newl;
return true;
}

kenyyy 2010-05-06
  • 打赏
  • 举报
回复
改为:


void insert(list *head,int n,int num)//插入
{
list *newl;
int i;
newl=(list *)malloc(sizeof(list));
for(i=1;i<n;i++)
{
head=head->next;
}
newl->next=head->next;
head->next=newl;
}

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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