接触了数据结构 发现无非就是 数据的存储问题和解决办法
那么就是 线性和非线性
最基础的就是 线性表(数组和链表)
不得不又重新 拾起 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; //指针下移
}
}