分别使用头插法和尾插法建立单链表
头插法
#include <stdio.h>
#include<stdlib.h>
#include<iostream>
#include<string>
typedef int Status;
typedef int ElemType;
typedef struct Node{
ElemType data; //存放元素值
struct Node * next;//指针域指向后继结点
}Node;
typedef struct Node * LinkList;
LinkList InitList_List(void);
LinkList CreateListTail(ElemType a[],int n);
LinkList CreateListHead(ElemType a[],int n);
void PrintList_List(LinkList head);
LinkList InitList_List(void)
{
LinkList head;
head=(Node *)malloc(sizeof(Node));
if(head==NULL) exit(1);
head->next=NULL;
return head;
}
LinkList CreateListHead(ElemType a[],int n)
{
LinkList head,p;
int i;
head=InitList_List();
for(i=n-1;i>=0;i--)
{
p=(Node *)malloc(sizeof(Node));
p->data=a[i];
p->next=head->next;
head->next=p;
}
return head;
}
void PrintList_List(LinkList head)
{
LinkList p;
p=head;
while(p->next!=NULL)
{
p=p->next;
printf(" %d ",p->data);
}
}
int main()
{
LinkList H_Head;
ElemType d[4]={17,24,39,45};
H_Head=CreateListHead(d,4);
printf("单链表是:\n");
PrintList_List(H_Head);
printf("\n\n");
return 0;
}
结果截图
尾插法
#include <stdio.h>
#include<stdlib.h>
#include<iostream>
#include<string>
typedef int Status;
typedef int ElemType;
typedef struct Node{
ElemType data; //存放元素值
struct Node *next;//指针域指向后继结点
}Node;
typedef struct Node * LinkList;
LinkList InitList_List(void);
LinkList CreateListTail(ElemType a[],int n);
void PrintList_List(LinkList head);
int main()
{
LinkList Tail_Head;
ElemType d[4]={17,24,39,45};
Tail_Head=CreateListTail(d,4);
printf("单链表是:\n");
PrintList_List(Tail_Head);
printf("\n");
return 0;
}
LinkList InitList_List(void)
{
LinkList head;
head=(Node *)malloc(sizeof(Node));
if(head ==NULL) exit(1);
head->next=NULL;
return head;
}
LinkList CreateListTail(ElemType a[],int n)
{
LinkList head,p,q;
int i;
head=InitList_List();
q=head;
for(i=0;i<n;i++)
{
p=(Node *)malloc(sizeof(Node));
p->data=a[i];
q->next=p;
q=p;
}
p->next=NULL;
return head;
}
void PrintList_List(LinkList head)
{
LinkList p;
p=head;
while(p->next!=NULL)
{
p=p->next;
printf(" %d ",p->data);
}
}
运行结果
看完点个赞!!!