问下c语言链表的问题 前面结构体里定义的指针和函数里定义的结构体指针有什么不同,看了n久了,还是看

问下c语言链表的问题
前面结构体里定义的指针和函数里定义的结构体指针有什么不同,看了n久了,还是看不明白链表,都有点怀疑自己的智商了!求前辈列出一个简单的链表给我讲解一下呗

以下代码是一个链表的逆置操作代码,供参考
#include<stdio.h>
#include <stdlib.h>

struct node {
    int n;  //结点中的数据
    struct node *next ; //指向后继结点的指针
} *list=NULL; //表头,初值NULL,表示空表
void createList() //建立链表
{
    struct node *p; //临时结点指针
    int i;
    
    for( i=5;i>0;i-- )
{
p=(struct node *) malloc( sizeof(struct node) ); //申请一个结点
p->n=i; //数据赋值
//以下两句,实现头插法建立链表
p->next=list; //把新结点p装在表头前
list=p ;  //p成为新的表头
}
}
void showList()
{
struct node *p=list;
while( p)
    {
printf("%d ", p->n );
p=p->next;
    }
printf("\n");
}

void reverseList()
{
    struct node *p=NULL,*h=list,*t;

    while(h)
{
t=h; //分离出一个结点
h=h->next; //h指向后续的部分,保持原表不丢失

t->next=p; //头插法
p=t; 
}
list=p;//表头指针赋值
}

int main()
{
printf("link:\n");
createList(); //建表
showList(); //显示表
reverseList(); //逆置
showList(); //再显示
return 0;
}追问

结构体里的那个指向下个节点的指针是怎么指向的

追答

首先:指针,通常是指指针变量,这是一种用来存储内存地址的变量!而内存地址值是个整数,所以,指针变量中存储的就是个整数,通常我们会用赋值操作符(等号)来对其赋值。

p->next=list; //把新结点p装在表头前 p结点的后继指针变量中存储list的值,而list中存的是当前表的首地址! 这样一句,就把p和list表串在了一起。

假设list是一串气球, p是一个单独的气球, 上面的操作,就是把p这个气球绑在了list这个气球串的第一个球的前面,形成了一个新的气球串。

温馨提示:答案为网友推荐,仅供参考
相似回答