25_判断链表是否为空+和+求链表长度

发布于:2021-10-16 19:21:50

#include
#include

typedef struct Node{
int data;//数据源
struct Node* pNext;//指针域
}NODE,*PNODE; // NODE等价于struct Node,PNODE等价于struct Node*;
//函数的声明
//创建一个非循环的链表
PNODE create_list(void){
int len;//存放结果的数目
int val;
//创建头结点,该头结点不存储数据
PNODE pHead = (PNODE)malloc(sizeof(NODE));
PNODE pTail = pHead; //保证PTail永远指向链表的尾结点
pTail->pNext = NULL;
if(NULL == pHead){
printf("程序内存分配失败");
}
printf("请输入你要创建节点的数目:");
scanf("%d",&len);
printf("你输入的值是%d
:",len);
for(int i = 0 ;i < len;i++){
printf("请输入第%d节点的值:",i+1);
scanf("%d",&val);
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if(NULL == pNew){
printf("程序内存分配失败");
}
pNew->data = val;
pTail->pNext = pNew;
pNew->pNext = NULL;
pTail = pNew;
}
return pHead;

}

/*
判断链表是否为null
*/

bool isEmpty(PNODE pHead){
if(pHead->pNext == NULL){//说明链表为空
return true;
}else{
return false;
}
}

/*
获得链表的长度
*/

int length_list(PNODE pHead){
int count = 0;
PNODE p = pHead->pNext; // 第一个节点不存储数据,所以要移动下一个节点
while(NULL != p){//说明该节点不为null
int val = p->data; //得到数据
printf("%d
",val);
p=p->pNext;//p移动到下一个节点
count=count+1;
}
return count;
}

/*
输出该链表的所有值
*/
void printf_list(PNODE pHead){
PNODE p = pHead->pNext; // 第一个节点不存储数据,所以要移动下一个节点
while(NULL != p){//说明该节点不为null
int val = p->data; //得到数据
printf("%d
",val);
p=p->pNext;//p移动到下一个节点
}

}
int main(){
printf("%s
","ksdkklsdkl");
PNODE pHead = NULL;//定义一个结构体指针变量
pHead = create_list();
printf_list(pHead);
return 0;
}

?



转载于:https://www.cnblogs.com/kebibuluan/p/6944039.html

相关推荐

最新更新

猜你喜欢