//链表操作
#include
#include
#include
//定义一个结构体包含数据域和指针域,指针域存放下一个节点的地址
typedef struct Node{
int data;
struct Node * pNextNode;
}NODE,*PNODE;
//创建一个链表,返回第一个节点的地址
PNODE createNodeLink(void);
//遍历链表,参数为第一个节点的地址
void traverseLinked(PNODE pHead);
int main(void){
//创建链表
PNODE pHead = createNodeLink();
//遍历链表
traverseLinked(pHead);
getchar();
return 0;
}
//创建链表,,下一个创建的节点的pNextNode指向上一个创建的节点,即从后往前创建
PNODE createNodeLink(void){
//中间变量,用于保存上一个节点
PNODE pNodeTail = (PNODE)malloc(sizeof(NODE));
if(pNodeTail == NULL){
printf("分配失败,程序终止!\n");
exit(-1);
}
int len = 7 ,i,val;
i = 0;
printf("请输入您要生成的链表的节点的个数:");
scanf("%d",&len);
for(i = 0;i < len;i++){
printf("请输入%d个节点的值:\n",i+1);
scanf("%d",&val);
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if(pNew == NULL){
printf("分配失败,程序终止!\n");
exit(-1);
}
pNew->data = val;
if(i == 0){
pNew->pNextNode = NULL;
}else{
pNew->pNextNode = pNodeTail;
}
pNodeTail = pNew;
}
//循环完成,pNodeTail刚好指向第一个节点
return pNodeTail;
}
//遍历链表
void traverseLinked(PNODE pHead){
PNODE pTemp = pHead;
while(pTemp != NULL){
printf("%d\t",pTemp->data);
pTemp = pTemp->pNextNode;
}
}
网站标题:c链表模拟笔记
文章起源:
http://chengdu.cdxwcx.cn/article/jdiioh.html