#include<stdio.h>
#include<stdlib.h>
struct MyStruct
{
int data; //数据域
struct MyStruct *pnext; //指针域
};
void digui(struct MyStruct *p)
{
if (p == NULL)
return;
else
{
printf("%d %p %p\n", p->data, p, p->pnext);
digui(p->pnext);
//结果要逆序输出,则把顺序调换
/*
digui(p->pnext);
printf("%d %p %p\n", p->data, p, p->pnext);
*/
//如图
![图片]()
//结果要逆序输出,则把顺序调换
/*
digui(p->pnext);
printf("%d %p %p\n", p->data, p, p->pnext);
*/
//如图
}
}
void main()
{
struct MyStruct *p;
struct MyStruct s1;
struct MyStruct s2;
struct MyStruct s3;
struct MyStruct s4;
struct MyStruct s5;
s1.data = 1;
s2.data = 2;
s3.data = 3;
s4.data = 4;
s5.data = 5;
s1.pnext = &s2;
s2.pnext = &s3;
s3.pnext = &s4;
s4.pnext = &s5;
s5.pnext =NULL;
p = &s1;
printf("%d\n", p->data);
printf("%d\n", p->pnext->data);
printf("%d\n", p->pnext->pnext->data);
printf("%d\n", p->pnext->pnext->pnext->data);
printf("%d\n", p->pnext->pnext->pnext->pnext->data);
![图片]()
printf("\n\n"); //for循环输出
for (struct MyStruct *px=p; px != NULL; px=px->pnext)
{
printf("%d %p %p\n", px->data,px,px->pnext);
}
printf("\n\n"); //递归输出
digui(p);
//输出结果与for循环输出结果一样
//输出结果与for循环输出结果一样
system("pause");
}
浙公网安备 33010602011771号