69,371
社区成员
发帖
与我相关
我的任务
分享
typedef struct Lnode
{
ElemType data;
struct Lnode *next;
}Lnode;
Lnode *createHead_LinkList(void)
{
int data;
Lnode *head,*p;
head=(Lnode *)malloc(sizeof(Lnode));
head->next=NULL;
while(1)
{
scanf("%d",&data);
if(data==32767) break;
p=(Lnode *)malloc(sizeof(Lnode));
p->data=data;
p->next=head->next;
head->next=p;
}
return head;
}
Lnode *createRear_LinkList(void)
{
int data;
Lnode *head,*p,*q;
head=p=(Lnode *)malloc(sizeof(Lnode));
p->next=NULL;
while(1)
{
scanf("%d", &data);
if(data==32767) break;
q=(Lnode *)malloc(sizeof(Lnode));
q->data=data;
q->next=p->next;
p->next=q;
p=q;
}
return head;
}
p->next=head->next;
head->next=p;
q->next=p->next;
p->next=q;
p=q;
头插入
|0|->|a|->|b|
|0|是头结点head
p->|n|->NULL;新建结点,next没有指向,暂时认为NULL,把p插入到0a之间
p->next = head->next
p
|
|0|->|a|->|b|
head->next = p
|0|->p
|
|a|->|b|
即
|0|->|n|->|a|->|b|
末尾插入
|0|->|a|->|b|->NULL
|0|是头结点head;p->|b|;p->next = NULL
q->|n|->NULL;新建结点,next没有指向,暂时认为NULL,把q插入到p之后
q->next = p->next;
p q
| |
|0|->|a|->|b|->NULL
p->next = q;
p -> q
| |
|0|->|a|->|b| NULL
p = q;//因为p要始终指向最后一个结点,前面插入一个后,p就要后移
p
|
|0|->|a|->|b|->|n|->NULL
我是在回复框内编辑的内容,不知道提交后会不会错位。
总之,要理解思想,我简单的模拟下,应该能理解。自己画拉下就明白了。