用到的头文件、结构体
//下文中用到了很多i,需要注意,各函数里的形参i一般代表是想要操作的节点的位置
#include <stdio.h>
#include <stdlib.h>
typedef int elemtype;
typedef struct node
{
elemtype data;
struct node *next;
}LinkList;
int i;//记录链表节点的个数(除头结点)
头插法创建链表`
LinkList *creat_LinkListF()
{
i = 0;
elemtype x;//x表示输入节点的数据
LinkList *head,*p;
head = (LinkList *)malloc(sizeof(LinkList));
if(NULL == head){
return 0;//申请空间失败
}
head -> next = NULL;
printf("请输入数据(输入0时结束!)\n");
scanf("%d",&x);
while(0 != x){
i ++;
p = (LinkList *)malloc(sizeof(LinkList));
if(NULL == p){
return head;//申请空间失败
}
p -> data = x;
p -> next = head -> next;
head -> next = p;
scanf("%d",&x);
}
head -> data = i;//将i的值存到头节点的数据域
printf("创建成功!\n");
return head;
}
尾插法创建链表
LinkList *creat_LinkListR()
{
LinkList *p1,*p2,*head;
elemtype x;
i = 0;
head = (LinkList *)malloc(sizeof(LinkList));
if(NULL == head){
return 0;
}
printf("请输入整形数据(输入0时结束!)\n");
scanf("%d",&x);
while(x != 0){
i ++;
head -> data = i;
p1 = (LinkList *)malloc(sizeof(LinkList));
if(1 == i){
p1 -> data = x;
p2