没啥好多说的,直接看代码。(C)
数据结构头插:
在头节点的后面进行插入操作,后一个插入进来的值,在前一个插入进来的值与头节点之间。
代码如下:
#include "stdafx.h"
#include "malloc.h"
#include "stdio.h"
typedef struct Lnode
{
int data;
struct Lnode *next;
}Lnode,*LinkList;
void Create_LinkTable(LinkList &L)
{
L = (LinkList)malloc(sizeof(Lnode));
L->data = 0;
L->next = NULL;
printf("数字:");
int data;
scanf("%d",&data);
while (1)
{
if (data == 32767) break;
else
{
LinkList p = (LinkList)malloc(sizeof(Lnode));
p->data = data;
p->next = L->next;
L->next = p;//头插法
scanf("%d",&data);
}
}
}
void Travel(LinkList L)
{
LinkList p = L;
while (p != NULL)
{
printf("%d", p->data);
p = p->next;
}
}
int main()
{
LinkList L;
Create_LinkTable(L);
Travel(L);
return 0;
}
从结果可以看出,输入的数字1234,遍历时变成了4321。
尾插法:
设法找到插入结点的上一个结点,总而言之,尾插法就是要使后面插入的结点在前一个插入结点和NULL值之间。
代码如下:
#include "stdafx.h"
#include "malloc.h"
#include "stdio.h"
typedef struct Lnode
{
int data;
struct Lnode *next;
}Lnode,*LinkList;
void Create_LinkTable(LinkList &L)
{
L = (LinkList)malloc(sizeof(Lnode));
L->data = 0;
L->next = NULL;
printf("数字:");
int data;
scanf("%d",&data);
LinkList fp = L;
while (1)
{
if (data == 32767) break;
else
{
LinkList p = (LinkList)malloc(sizeof(Lnode));
p->data = data;
fp->next = p;
p->next = NULL;
fp = p;//尾插法
scanf("%d",&data);
}
}
}
void Travel(LinkList L)
{
LinkList p = L;
while (p != NULL)
{
printf("%d", p->data);
p = p->next;
}
}
int main()
{
LinkList L;
Create_LinkTable(L);
Travel(L);
return 0;
}
从结果可以看出,输入为1234时,遍历的仍然是1234。
全文结束,欢迎在评论区讨论~