C语言指针

指针储存一个变量的在内存中的地址。

 
int    *i;    /* 一个整型的指针 */
double *d;    /* 一个 double 型的指针 */
float  *f;    /* 一个浮点型的指针 */
char   *c;     /* 一个字符型的指针 */
 

指针也可以指向结构体。指向结构体中的某个参数使用“->”符号,NULL表示指针为空。

 
typedef struct {
	int val;
	list *next;
} list;
//定义两个元素的结构体,一个是int型数据,一个是结构体指针,指向某个位置
list  *p,*q,*head;    //定义结构体指针
p=(list*)malloc(sizeof(list));//为某个结点分配内存
p->val=1;//为p中的val赋值
p->next=NULL;//将p中的next指针赋为空
head=p;//head指针指向p
q=(list*)malloc(sizeof(list));
q->val=2;
q->next=NULL;
p->next=q;//令p中的next指针指向q

上面就创建了两个元素的链表(省略主函数)。创建多个元素的链表,可以用循环来创建。数据结构如图(注意,head和next指针都指向的是下一个结点整体,而不是某个元素):

插入:以上表为例,假设插入到pq之间,首先为为结构体指针L分配内存,然后,令L->next=p->next(即 令L的next指针指向p的next指针的位置),最后p->next=L(将p的next指针改为L)。

删除:我们假设删除q,首先用指针L指向q,然后令q的上一个结点p的next指针指向q的next指针,最后释放L的内存。

遍历:使用while循环,先让一个指针指向head(这里设置为a,如果没有影响用head本身也可以),每次进行操作后都执行a=a->next(让它指向下一个结点)。直到a指向NULL(即到达表尾)结束。(下图为遍历过程)

知识共享许可协议
Text is available under CC BY-NC-SA 4.0 unless otherwise stated.

除非特殊声明,本站所有内容均以 CC BY-NC-SA 4.0协议授权。
上一篇
下一篇