#include<stdio.h>
#include<stdlib.h>
#define N 10
//定义结构体单元
typedef struct node{
int data;//结构体数据域
struct node* next;//结构体指针域
}ElemSN;
//正向创建单向链表(方法一,先创建头结点)
/*
ElemSN* CreatLink(int a[],int n)
{
ElemSN *head,*tail,*p;
//创建头结点
head=tail=(ElemSN*)malloc(sizeof(ElemSN));
head->data=a[0];
head->next=NULL;
//创建后面的结点
for(int i=1;i<n;i++)
{
p=(ElemSN*)malloc(sizeof(ElemSN));
p->data=a[i];
p->next=NULL;
tail->next=p;
tail=p;
}
return head;
} */
//创建单向链表方法二(不需要先创建头结点)
/*
ElemSN* CreatLink(int a[],int n)
{
ElemSN *p,*tail,*head=NULL;
for(int i=0;i<n;i++)
{
p=(ElemSN*)malloc(sizeof(ElemSN));
p->data=a[i];
p->next=NULL;
if(!head)
head=tail=p;//如果创建的结点是第一个结点,令head=tail=p
else
tail=tail->next=p;
}
return head;
}
*/
//创建单向链表方法三(不需要 p 指针)
ElemSN* CreatLink(int a[],int n)
{
ElemSN *head,*tail;
head=tail=(ElemSN*)malloc(sizeof(ElemSN));
head->data=a[0];
head->next=NULL;
for(int i=1;i<n;i++)
{
tail=tail->next=(ElemSN*)malloc(sizeof(ElemSN));
tail->data=a[i];
tail->next=NULL;
}
return head;
}
void PrintLink(ElemSN* head)
{
ElemSN *p=head;
for(;p;p=p->next)
printf("%5d",p->data);
}
int main(void)
{
ElemSN *head;
int a[N]={3,2,5,8,4,7,6,9,0,1};
head=CreatLink(a,N);
PrintLink(head);
}
正向创建单向链表(三种方法)及输出各个结点的值
猜你喜欢
转载自blog.csdn.net/qq_39241239/article/details/80878878
今日推荐
周排行