c语言数据结构*单链表*,指针的理解

本文作者:longlongago     博客地址: http://blog.csdn.net/longlongago2000
本例有助于理解C指针和单链表的思想。
先说说指针的基本概念。
假设定义int a=100;地址分配为1010;
设定义LinkList H;指针变量;H指向结构体LNode,假设其初始化分配的空间地址为1001,其值为1010。再定义指向结构体指针H的指针,LinkList *L;假设其初始化分配的空间地址为1001;
变量内存地址说明
H10011010这时获取H的值将是1010
.............
*L10051001获取*L的值将是1001,而**L的值将是1010
......... 
a1010100&a为1010, a为100
#include"stdio.h"
#define OK 1
#define FALSE -1
#define OVERFLOW -1
typedef int ElemType;
typedef int Status;
typedef struct{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
Status InitList(LinkList *L){
*L=(LinkList)malloc(sizeof(LNode));//L为指向结构体指针L的值
(*L)->data=NULL;
(*L)->next=NULL;
return OK;
}
Status InsertList(LinkList L,ElemType e){
LinkList p;
LinkList s;
if(!L)return FALSE;
p=L;
if(p->data==NULL){
  p->data=e;
  return OK;
}
while(p->next!=NULL)
  p=p->next;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;
s->next=NULL;
p->next=s;
return OK;
}
Status PrintList(LinkList L){
LinkList p;
p=L;
if(L){
printf("x=%d/n",p->data);
PrintList(p->next);
}
return OK;
}
Status DelList(LinkList L,int i,ElemType *e){
LinkList p,s;
int j=0;
p=L;
while(p->next && j<i-2){
  p=p->next;
  ++j;
}
if(!(p->next) || j>i-2)return FALSE;
s=p->next;
p->next=s->next;
*e=s->data;
free(s);
}
void main(){
int e;
LinkList H;//H只是指针存储的指向的地址,不是*H
InitList(&H);
InsertList(H,1);
InsertList(H,2);
InsertList(H,3);
InsertList(H,4);
InsertList(H,5);
InsertList(H,6);
InsertList(H,7);
InsertList(H,8);
InsertList(H,9);
InsertList(H,0);
DelList(H,5,&e);
PrintList(H);
printf("%d/n",e);
}
希望对大家有帮助,有问题可以提出.
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值