初学链表

来源:互联网 发布:航天信息a3软件下载 编辑:程序博客网 时间:2024/06/05 05:12
        作为一个大三自动化专业的学生,现在心血来潮想好好温习一下C语言,大一的时候老师没好好讲,自己也没好好听,大二的时候在实验室玩了一年PLC,现在大三了,想搞搞嵌入式方面的东西,终于认识到了C语言的重要性,复习了一段时间,现在学到了链表,现在写一篇关于单链表的博文。

        链表,在我看来就是节点与节点之间相互联系,每一个节点都会包括数据域和指针域两大部分,而在所有的节点中头节点则是最重要的,找到头节点就相当于找到了链表,头节点数据域为空,指针域为下一个节点的地址,节点与节点之间通过指针域联系,前一个节点的指针域存着后一个节点的地址,下面附一个我写的关于链表的一个小程序。

#include "stdio.h"
#include "stdlib.h"


typedef struct LNode
{
int data;
struct LNode *next;
 } LinkList;


void CreateList(LinkList *&L,int a[],int n)
{
LinkList *s,*r;
int i;
L=(LinkList *)malloc(sizeof(LinkList));
r=L;
for(i=0;i<n;i++)
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=a[i];
r->next=s;
r=s;
}
r->next=NULL;
}
void GetElem(LinkList *L,int i,int &e)
{
int j=0;
LinkList *p=L;
while(j<i&&p!=NULL)
{
j++;
p=p->next;
}
e=p->data;
printf("%d\n",e); 
}
void DispList(LinkList *L)
{
LinkList *p=L->next;
while(p!=NULL)
{
printf("%d\t",p->data);
p=p->next;
}
printf("\n");
}
int main()
{
int i;
int p;
LinkList *st;
int a[10];
for(i=0;i<10;i++)
{
a[i]=i;
}
CreateList(st,a,10);
DispList(st);
GetElem(st,3,p);
printf("%d\n",p);
return 0;
}

1 0