把S结点插入到链表末尾,结果应该是这样的
所要做的工作就是,把F值所在的结点的next指向s结点,并且把s结点的next指向NULL
所以,有以下方法:
1>对应B选项
把s结点的next指向null即:s->next = '\0'
把p指针指向F所在的结点,也就是p结点的next指针所指向的结点:p = p->next
把F所在的结点的next指向s结点;
2>对应C选项
p指针指向F所在的结点:p = p->next
s结点的next指针指向p->next,也就是NULL:s->next = p->next
把F所在的结点的next指向s结点;
3>对应选项D
这个选项其实和C选项采用的方法是一样的,只不过取值的方式不一样,C选项用指针取值的,而D选项首先把指针的所指向的地址给拿出来,在对其取值,相当于普通变量。所以C选项用的是'->'而D选项用的是'.'
加分了#include<stdio.h>
#include<stdlib.h>
class point //节点类
{
public:
int a //节点值
point *next//next指针
}
void newlast(point *&p,int i) //在*p所指的链表的最后新建一个值为i的节点
{
point *q,*o
q=p
while(q->next)
{
q=q->next
}
printf("%d\n",q->a)
o=(point *)malloc(sizeof(point))
o->a=i
q->next=o
o->next=NULL //结束标记
}
void show(point *p)//输出指针p所指链表
{
point *q
q=p
while(q)
{
printf("%d\t",q->a)
q=q->next
}
printf("\n")
}
int main()
{
point b1,b2,b3
point *p
b1.a=1
b2.a=2
b3.a=3
p=&b1
b1.next=&b2
b2.next=&b3
b3.next=NULL //结束标记
show(p)
newlast(p,4)
show(p)
return 0
}
下面的程序是单链表的建立与输出,都有详细的注释,相信你能看的懂但要想学习链表必须得掌握了一定的C语言基础
下面这个链表的作用是建立5个结点的单链表,5个结点的值输入以后,依次输出各个结点的值
#include<stdio.h>
#include<stdlib.h>
//链表的建立与输出
struct node//定义结点的类型
{
int num,score
node*link
}
void main()
{
node*creat(int n)//函数原型声明
void print(node*h)//函数原型声明
node*head=0//定义链头指针并初始化
head=creat(5)//调用creat函数创建链表
print(head)//调用print函数输出链表
}
node*creat(int n)
{
node*h=0,*p,*q
int i
for(i=1i<=ni++)
{
q=(node*)malloc(sizeof(node))//分配一个结点空间
scanf("%d%d",&q->num,&q->score)//输入新结点的值
q->link=0//新结点的指针域置0
if(h==0)
h=q//第一个结点作为链头结点
else
p->link=q//新结点添加到链表的末尾
p=q
}
return h//返回链头指针
}
void print(node*h)//链表输出函数的定义
{
while(h)//当指针h非空时输出h所指结点的值
{
printf("num=%d\tscore=%d\n",h->num,h->score)
h=h->link//使h指向下一个结点
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)