69,371
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int Status;
typedef int ElemType;
//单链表的存储结构
typedef struct LNode
{
ElemType data;
struct LNode *next; //next指向自身类型struct LNode *的指针
}LNode,*LinkList; //LinkList为指向结构体LNode的指针类型
int ListEmpty(LinkList L)
{
printf("\n正在检查.......\n");
if(L->next) return FALSE; //非空 0
return TRUE; //空 1
}
/*头插法(前插法)
*/
void CreateList_H(LinkList L,int n) //形参LinkList类型的指针变量(用于指向新开辟储存单元),逆序储存n个元素值
{
L = (LinkList)malloc(sizeof(LNode)); //为头结点开辟储存空间
L->next = NULL; //含头结点的空链表
int i; //元素数量计数
for(i=0;i<n;i++) //循环输入元素
{
ElemType e;
LNode *p=(LinkList)malloc(sizeof(LNode)); //为新结点开辟空间并令指针指向该地址
printf("请输入1个链表元素:");
scanf("%d",&e); //向新结点数据域输入数据
p->data = e;
printf("保存完成~\n");
p->next = L->next; //头结点指针域的值(即新结点后继结点地址)赋给新结点指针域进行连接
L->next = p; //指针域指针连接顺序不可颠倒 新结点地址赋值给头结点指针域进行连接
}
}
//链表遍历
void print(LinkList L)
{
LNode *p;
p=L->next;
if(p == NULL) printf("链表为空~");
while(p != NULL)
{
printf("%d ",p->data);
p = p->next;
}
}
int main()
{
int status;
LinkList L;
CreateList_H(L,2);
print(L);
status = ListEmpty(L);
printf("%d\n",status);
return 0;
}
LinkList CreateList_H(LinkList L,int n) //形参LinkList类型的指针变量(用于指向新开辟储存单元),逆序储存n个元素值
{
int i; //元素数量计数
L = (LinkList)malloc(sizeof(LNode)); //为头结点开辟储存空间
L->next = NULL; //含头结点的空链表
for(i=0;i<n;i++) //循环输入元素
{
ElemType e;
LNode *p=(LinkList)malloc(sizeof(LNode)); //为新结点开辟空间并令指针指向该地址
printf("请输入1个链表元素:");
scanf("%d",&e); //向新结点数据域输入数据
p->data = e;
printf("保存完成~\n");
p->next = L->next; //头结点指针域的值(即新结点后继结点地址)赋给新结点指针域进行连接
L->next = p; //指针域指针连接顺序不可颠倒 新结点地址赋值给头结点指针域进行连接
}
return L;
}
void CreateList_H(LinkList *L,int n) //形参LinkList类型的指针变量(用于指向新开辟储存单元),逆序储存n个元素值
{
int i; //元素数量计数
*L = (LinkList)malloc(sizeof(LNode)); //为头结点开辟储存空间
(*L)->next = NULL; //含头结点的空链表
for(i=0;i<n;i++) //循环输入元素
{
ElemType e;
LNode *p=(LinkList)malloc(sizeof(LNode)); //为新结点开辟空间并令指针指向该地址
printf("请输入1个链表元素:");
scanf("%d",&e); //向新结点数据域输入数据
p->data = e;
printf("保存完成~\n");
p->next = (*L)->next; //头结点指针域的值(即新结点后继结点地址)赋给新结点指针域进行连接
(*L)->next = p; //指针域指针连接顺序不可颠倒 新结点地址赋值给头结点指针域进行连接
}
}
/*头插法(前插法)
*/
void CreateList_H(LinkList * PL, int n) //形参LinkList类型的指针变量(用于指向新开辟储存单元),逆序储存n个元素值
{
LinkList L = *PL;
L = (LinkList)malloc(sizeof(LNode)); //为头结点开辟储存空间
*PL = L;
L->next = NULL; //含头结点的空链表
int i; //元素数量计数
for (i = 0; i < n; i++) //循环输入元素
{
ElemType e;
LNode *p = (LinkList)malloc(sizeof(LNode)); //为新结点开辟空间并令指针指向该地址
printf("请输入1个链表元素:");
scanf("%d", &e); //向新结点数据域输入数据
p->data = e;
printf("保存完成~\n");
p->next = L->next; //头结点指针域的值(即新结点后继结点地址)赋给新结点指针域进行连接
L->next = p; //指针域指针连接顺序不可颠倒 新结点地址赋值给头结点指针域进行连接
}
}
#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int Status;
typedef int ElemType;
//单链表的存储结构
typedef struct LNode
{
ElemType data;
struct LNode *next; //next指向自身类型struct LNode *的指针
}LNode,*LinkList; //LinkList为指向结构体LNode的指针类型
int ListEmpty(LinkList L)
{
printf("\n正在检查.......\n");
if(L->next) return FALSE; //非空 0
return TRUE; //空 1
}
/*头插法(前插法)
*/
void CreateList_H(LinkList *L,int n) //形参LinkList类型的指针变量(用于指向新开辟储存单元),逆序储存n个元素值
{
*L = (LinkList)malloc(sizeof(LNode)); //为头结点开辟储存空间
(*L)->next = NULL; //含头结点的空链表
int i; //元素数量计数
for(i=0;i<n;i++) //循环输入元素
{
ElemType e;
LNode *p=(LinkList)malloc(sizeof(LNode)); //为新结点开辟空间并令指针指向该地址
printf("请输入1个链表元素:");
scanf("%d",&e); //向新结点数据域输入数据
p->data = e;
printf("保存完成~\n");
p->next = (*L)->next; //头结点指针域的值(即新结点后继结点地址)赋给新结点指针域进行连接
(*L)->next = p; //指针域指针连接顺序不可颠倒 新结点地址赋值给头结点指针域进行连接
}
}
//链表遍历
void print(LinkList L)
{
LNode *p;
p=L->next;
if(p == NULL) printf("链表为空~");
while(p != NULL)
{
printf("%d ",p->data);
p = p->next;
}
}
int main()
{
int status;
LinkList L;
CreateList_H(&L,2);
print(L);
status = ListEmpty(L);
printf("%d\n",status);
return 0;
}