定义节点:
typedef struct Node {
int data;
Node* pNext;
}NODE, *PNODE;
细节说明,PNode 就代表struct Node* ,上面的表单是也可以写成如下形式,含义是一样的
typedef struct Node {
int data;
Node* pNext;
}*PNODE,NODE ;
算法操作
1. 创建链表
//1.初始化链表
PNODE create_list(void) {
int len,val;
printf("%s", "请输入你要生成链表的长度\n");
scanf("%d", &len);
PNODE pHead = (PNODE)malloc(sizeof(PNODE));//创建一个头结点
PNODE pTail = pHead;//永远指向最后一个
pTail->pNext = NULL;
for (int i = 0; i < len; i++)
{
printf("请输入第%d个变量的数值 ", i);
scanf("%d", &val);
PNODE p = (PNODE)malloc(sizeof(PNODE));
if (NULL == p) {
printf("分配内存失败");
}
p->data = val;
p->pNext = NULL;
pTail->pNext = p;//尾节点指向挂在Ptail上
pTail = p;//pTail 就是尾节点了
}
return pHead;
}
2. 显示链表数据
//2.输出
void show_list(PNODE pHead) {
PNODE p = pHead->pNext;//第一个节点地址
while (p != NULL)
{
printf("%d\n", p->data);
p = p->pNext;
}
printf("\n");
return;
}
3. 运行测试
int main()
{
PNODE pHead = NULL;//代表 Struct Node* pHead=NULL;
pHead = create_list();//
show_list(pHead);
return 0;
}

原文:http://www.cnblogs.com/clc2008/p/6815427.html