C语言数据结构之简单实现链表的建立及打印
链表是数据结构中非常重要的一种存储结构,相较非线性结构树、图而言,链表有着更为广泛的应用。C语言实现链表的建立与打印如下:
1、结点的结构体定义
链表的每一个结点都包括数据域和指针域两个部分,其定义如下:
typedef struct Node{
int data;//数据域
struct Node *next;//指针域
}SNode,*Linkist;
2、建立单链表
利用尾插法建立链表是最常用的方法,需要用到两个结构体指针p和r,其算法设计如下:
Linkist CreateNode(){
int num;
int i=1;
Linkist L;//头指针
Linkist p,r;
L=(SNode *)malloc(sizeof(SNode));
L->next=NULL;//初始化
p=L;
printf("please input %d number:(数字0结束输入)\n",i);
scanf("%d",&num);
while(num!=0){
i=i+1;
r=(SNode *)malloc(sizeof(SNode));
r->data=num;
r->next=NULL;
p->next=r;
p=r;
printf("please input %d number:\n",i);
scanf("%d",&num);
}
return L;
}
3 、单链表的打印
对链表进行遍历输出,其算法设计如下:
void PrintList(Linkist L){
Linkist P;
P=L->next;
printf("\n建立的单链表为:\n");
while(P!=NULL){
printf("%d\n",P->data);
P=P->next;
}
}
4、源代码
#include <stdio.h>
#include <stdlib.h>
typedef struct Node{
int data;
struct Node *next;
}SNode,*Linkist;
Linkist CreateNode(){
int num;
int i=1;
Linkist L;
Linkist p,r;
L=(SNode *)malloc(sizeof(SNode));
L->next=NULL;//初始化
p=L;
printf("please input %d number:(数字0结束输入)\n",i);
scanf("%d",&num);
while(num!=0){
i=i+1;
r=(SNode *)malloc(sizeof(SNode));
r->data=num;
r->next=NULL;
p->next=r;
p=r;
printf("please input %d number:\n",i);
scanf("%d",&num);
}
return L;
}
void PrintList(Linkist L){
Linkist P;
P=L->next;
printf("\n建立的单链表为:\n");
while(P!=NULL){
printf("%d\n",P->data);
P=P->next;
}
}
int main()
{
Linkist T;
T=CreateNode();
PrintList(T);
return 0;
}

本文介绍了C语言中如何简单实现链表的建立和打印。通过结点的结构体定义,使用尾插法建立单链表,并提供了单链表的遍历打印算法。
4727

被折叠的 条评论
为什么被折叠?



