一、创建单链表
/*list.h*/
#ifndef __LIST_H__
#define __LIST_H__
#include "stdio.h"
#include "stdlib.h"
typedef struct ListNode {
int data;
struct ListNode *next;
}stListNode;
stListNode * Linklist_Create();
void Linklist_Print(stListNode * pstHead);
#endif
/*list.c*/
#include "list.h"
/******************************************************************************************************
函数名称: Linklist_Create
函数功能:
入 参:
出 参:
返回 值:
*******************************************************************************************************/
void Linklist_Print(stListNode * pstHead)
{
stListNode * pstCurNode = NULL;
if (NULL == pstHead) {
printf("Empty List\n");
return;
}
//pstCurNode = pstHead->next;
pstCurNode = pstHead;
while (NULL != pstCurNode) {
printf("%c\n",pstCurNode->data);
pstCurNode = pstCurNode->next;
}
return ;
}
/******************************************************************************************************
函数名称: Linklist_Create
函数功能:
入 参:
出 参:
返回 值:
*******************************************************************************************************/
stListNode * Linklist_Create()
{
char ch;
stListNode *pstHead = NULL;
stListNode *pstCurNode = NULL;
stListNode *pstNewNode = NULL;
/*创建头节点*/
pstHead = (stListNode *) malloc(sizeof(stListNode));
if (NULL == pstHead) {
printf("Linklist_Init malloc fail\n");
return pstHead;
}
pstHead->data = '\0'; //头节点的数据域为无效值
pstHead->next = NULL;
/*pstCurNode 指向pstHead,pstCurNode移动,将将创建的节点串联起来*/
pstCurNode = pstHead;
/*创建数据节点*/
while((ch = getchar()) != '\n') {
pstNewNode = (stListNode *) malloc(sizeof(stListNode));
pstNewNode->data = ch;
pstNewNode->next = NULL;
printf("%c\n",pstNewNode->data);
pstCurNode->next = pstNewNode;
pstCurNode = pstNewNode;
}
/*返回链表头节点*/
return pstHead;
}
/*main.c*/
#include "stdio.h"
#include "math.h"
#include "stdlib.h"
#include "string.h"
#include "list.h"
stListNode * g_pstHead = NULL;
int main ()
{
stListNode *pstHead = NULL;
//tHead = Linklist_Init();
pstHead = Linklist_Create();
Linklist_Print(pstHead);
printf("Hello world!\n");
system("pause");
}
运行结果:
创建过程图示: