正向和逆向分别建立单链表。
数据为[3,2,5,8,4,7]
正向建链后的数据[3,2,5,8,4,7]
逆向建链的数据[7,4,8,5,2,3]
typedef struct node {
int data;
struct node* next;
}ElemSN;
//正向建链
ElemSN * CreateLink(int a[],int n){
ElemSN * head,* p,* t;
t=head=NULL;
for(int i=0;i<n;++i){
p=(ElemSN *)malloc(sizeof(ElemSN));
p->data = a[i];
p->next=NULL;
if(!head) head=t=p;
else{
t=t->next=p;
}
}
return head;
}
//逆向建链
ElemSN * CreateLink(int a[],int n){
ElemSN *head=NULL,*p;
for(int i=0;i<n;++i){
p=(ElemSN *)malloc(sizeof(ElemSN));
p->data=a[i];
if(!head) head=p;
else{
p->next=head;
head=p;
}
}
return head;
}
tips
1.记得释放内存。
2.将此代码装入大脑中,能够背诵并默写出来。
//用于打印输出的函数
void PrintLink(const ElemSN * const h){
ElemSN * temp = h;
while(h){
printf("%5d",temp->data);
temp=temp->next;
}
}