单向链表(一) 节点结构体、创建链表、释放链表、遍历链表
2014-07-31 11:24
405 查看
1、定义一个节点的结构体,用于存储 数据 和 指针:
2、看一张单向链表的结构图:
3、如果,要用链表按顺序存放这样一组数据:{1, 3, 5, 2,4,8,6,7},如图所示:
4、创建链表:
5、遍历链表
6、释放链表:
7、main函数中调用:
8、运行结果:
// 定义节点结构体 struct tagNode { int value; tagNode *pNext; };
2、看一张单向链表的结构图:
3、如果,要用链表按顺序存放这样一组数据:{1, 3, 5, 2,4,8,6,7},如图所示:
4、创建链表:
tagNode* CreateLinkedList() { tagNode *pHead = NULL; // 头结点 tagNode *pEnd = NULL; // 尾节点 tagNode *pNew = NULL; // 新节点 char choose = 'y'; int integer; printf("请输入节点的值:"); scanf("%d", &integer); getchar(); // 创建一个新节点 pNew = (tagNode *)malloc(sizeof(tagNode)); pNew->value = integer; pNew->pNext = NULL; pHead = pNew; // 因为是第一个节点,所以新建的节点即是头结点 pEnd = pHead; // 因为是第一个节点,所以头结点即是尾节点 printf("\n\n是否继续添加节点(y/...):"); scanf("%c", &choose); getchar(); while (choose == 'y') { printf("请输入节点的值:"); scanf("%d", &integer); getchar(); // 创建一个新节点 pNew = (tagNode *)malloc(sizeof(tagNode)); pNew->value = integer; pNew->pNext = NULL; pEnd->pNext = pNew; // 将创建的新节点 连接到 链表末尾 pEnd = pNew; // 链表的尾节点改变(变为新节点) printf("\n\n是否继续添加节点(y/...):"); scanf("%c", &choose); getchar(); } return pHead; }
5、遍历链表
void TraverseNodes(tagNode *pHead) { tagNode *pTemp = pHead; if (pHead == NULL) { printf("链表为空!\n"); return; } while (pTemp) { printf("%d\t", pTemp->value); pTemp = pTemp->pNext; } }
6、释放链表:
void FreeLinkedList(tagNode *pHead) { tagNode *pTemp = NULL; if (pHead == NULL) { printf("链表为空!\n"); return; } while (pHead) { pTemp = pHead->pNext; free(pHead); pHead = pTemp; } }
7、main函数中调用:
int _tmain(int argc, _TCHAR* argv[]) { tagNode *p = NULL; p = CreateLinkedList(); printf("\n\n遍历:\n"); TraverseNodes(p); FreeLinkedList(p); getchar(); return 0; }
8、运行结果:
相关文章推荐
- 单向链表小练习--》创建链表头,添加删除链表节点,释放链表内存,选择插入数据
- 一次遍历单向链表找到中间节点
- C实现简单单向链表,一次遍历查找倒数第k个节点的值
- 单向链表的创建和遍历
- 链表之节点插入、查找删除、遍历打印、遍历释放
- 单向循环链表创建、遍历、插入、删除、查找(按位置,按元素值)、清空、销毁
- malloc的链表,创建链表,遍历链表,插入节点,删除节点
- java创建节点和单向链表
- 两种方法实现单向链表的创建、遍历、删除、查找、逆序输出(循环法和递归法)
- 单向链表的创建与遍历(先进先出和先进后出)
- 单向链表的创建与遍历
- 用结构体实现链表的创建、遍历、结点插入、结点删除、链表删除-----带菜单选项
- 单向链表的相关操作总结:创建、删除、查找、排序、统计链表大小、链表的反转和遍历等
- 单向链表的相关操作(创建,遍历,插入,删除,逆置)
- 单链表的创建和遍历、求单链表中节点的个数、查找单链表中的中间结点、判断单链表是否有环、取出有环链表中环的长度,删除有序链表中的重复结点
- 程序员面试100题(算法)之查找链表中倒数第k个节点(含单向链表的创建和打印)
- C语言单向链表的创建、释放、插入、删除、翻转操作练习
- 【算法题】一次遍历单向链表找到中间节点
- 利用类对象为节点创建简单单向链表
- java实现单向链表--创建、遍历