您的位置:首页 > 其它

重新认识链表(单向链表并遍历)

2016-05-08 00:00 274 查看
接触了数据结构 发现无非就是 数据的存储问题和解决办法

那么就是 线性和非线性

最基础的就是 线性表(数组和链表)

不得不又重新 拾起 C语言,也是我比较头痛的 指针问题。

C语言实训的时候 接触到链表 当时并没有 很好的理解他 只是死记了他的结构模式和语法 。

今天十几分钟的复习 突然感受到了 他的逻辑思想 还是很高兴的

下面是一个简单的 单链表 。

有问题大家互相交流学习!

#include<stdio.h>
#include<malloc.h>
struct list {
int a;
struct list * next;  //下一个节点地址
} ;
int main(){
struct list *p;         //每次输入新申请的节点
struct list *head=NULL; //头结点
struct list *last=NULL; //下一个数据
int i;                 //申请的节点数
int j;
printf("%s\n","请输入你要申请的节点数");
scanf("%d",&j);          //输入需要申请的节点数
for(i=0;i<j;i++){
p = (struct list *)malloc(sizeof(struct  list));//申请新节点空间
scanf("%d",&p->a);              //为新申请的节点填充值
p->next=NULL;                   //新申请的节点 只是为了填写数据,不真正连接到链表中
if(head==NULL){                   //确定链表头为空
head=last=p;                  //把代理p节点的值赋给表头
}else{
last->next=p;                 // 把 代理p 节点的地址给真正链表结构的指针所指处
last=p;                       //把代理p的数据地址给链表
}
}
p=head;                      //把表头地址给代理p
while(p!=NULL){
printf("%d  ",p->a);    //输出当前内存位置的数据
p=p->next;              //指针下移
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: