#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
struct Node{
int data;
struct Node * pNext;
};
struct Node * createList(void){
int len; //存放有效节点的个数
int i;
int val; //用来临时存放用户输入的节点的值
struct Node * pHead = (struct Node *)malloc(sizeof(struct Node));
if (NULL == pHead) {
printf("分配失败程序终止!\n");
exit(-1);
}
struct Node * pTail = pHead;
pTail->pNext=NULL;
printf("请输入要生成链表的节点个数: len=");
scanf_s("%d", &len);
for (int i = 0; i < len; ++i){
printf("请输入第%d个节点的值:", i + i);
scanf_s("%d",&val);
struct Node * pNew = (struct Node *)malloc(sizeof(struct Node));
if (NULL == pNew) {
printf("分配失败程序终止!\n");
exit(-1);
}
pNew->data = val;
pTail->pNext = pNew;
pNew->pNext = NULL;
pTail = pNew;
}
return pHead;
};
bool empty_list(struct Node * pHead) {
if (pHead->pNext == NULL) {
return true;
}else{
return false;
}
}
void TraverseList(struct Node * pHead ) {
if (empty_list(pHead)) { //判断链表是否为空
printf("链表为空");
}else {
//链表操作
}
//优化链表操作
struct Node * p = pHead->pNext;
while (NULL!=p){
printf("%d\n", p->data);
p = p->pNext;
}
return;
}
int main(void) {
struct Node * pHead=NULL; //头指针(存放链表头结点地址)
pHead = createList(); //构建一个链表
TraverseList(pHead); //操作链表
}