#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <stdbool.h>
typedef struct note
{
int data;
struct note *pnext;
}NODE,*PNODE;
PNODE create_list(void);
void traverse_list(PNODE phead);
bool insert_line(PNODE phead,int pos,int val);
int main()
{
PNODE phead=NULL;
phead=create_list();
traverse_list(phead);
insert_line(phead,3,5);
traverse_list(phead);
return 0;
}
PNODE create_list(void)
{
int len;
int val;
printf("请输入想要创建的节点数:");
scanf("%d",&len);
PNODE phead=(PNODE)malloc(sizeof(PNODE));
PNODE ptail=phead;
ptail->pnext=NULL;
if(phead==NULL)
exit(-1);
int i;
for(i=0;i<len;i++){
printf("请输入第%d节点储存的值:",i+1);
scanf("%d",&val);
PNODE pnew=(PNODE)malloc(sizeof(NODE));
pnew->data=val;
ptail->pnext=pnew;
pnew->pnext=NULL;
ptail=pnew;
}
return phead;
}
void traverse_list(PNODE phead)
{
PNODE p=phead;
while(p!=NULL&&p->pnext!=NULL){
p=p->pnext;
printf("%d ",p->data);
}
return;
}
bool insert_line(PNODE phead,int pos,int val)
{
int i=0;
PNODE p=phead->pnext;
while(p!=NULL&&i<pos-1){
p=p->pnext;
i++;
}
if(p==NULL||i>pos-1){插入函数insert_line中为神马要i>pos-1,i最大难道不是pos-1吗,i还可能出现比pos-1大的情况吗?
return false;
}
PNODE pnew=(PNODE)malloc(sizeof(NODE));
if(pnew==NULL){
printf("动态分配内存失败");
exit(-1);
}
pnew->data=val;
PNODE q=p->pnext;
p->pnext=pnew;
pnew->pnext=q;
return true;
}