链表创建和链表遍历操作
来源:互联网 发布:手机虚拟歌姬软件 编辑:程序博客网 时间:2024/06/13 09:23
实现的方法
PNODE create(void);void travers(PNODE);bool empty(PNODE);int length(PNODE);void sort(PNODE);bool insert(PNODE, int, int);bool del(PNODE, int, int*);
全部代码
#include <stdio.h>#include <malloc.h>#include <stdlib.h>/* * 单链表*/typedef struct Node{ int data; //数据 struct Node *pNext; //下一个节点指针}NODE, *PNODE;PNODE create(void);void travers(PNODE);bool empty(PNODE);int length(PNODE);void sort(PNODE);bool insert(PNODE, int, int);bool del(PNODE, int, int*);int main(void){ PNODE pHead = NULL; pHead = create(); if (empty(pHead)){ printf("链表为空"); } int len = length(pHead); printf("lenght:%d \n", len); travers(pHead); printf("sort"); sort(pHead); travers(pHead); int pVal; del(pHead, 2, &pVal); printf("del,pos:%d,val%d", 2, pVal); travers(pHead); insert(pHead, 3, 122); printf("insert,pos:%d,val%d", 3, 122); travers(pHead); system("pause"); return 0;}PNODE create(void){ int len; //节点个数 int val; //节点值 int i; printf("请输入节点个数len: "); scanf("%d", &len); PNODE pHead = (PNODE)malloc(sizeof(NODE)); pHead->pNext = NULL; PNODE pTial = (PNODE)malloc(sizeof(NODE)); pTial = pHead; for (i = 0; i < len; i++) { printf("请输入第%d个 :", i + 1); scanf("%d", &val); PNODE pNew = (PNODE)malloc(sizeof(NODE)); pNew->data = val; pNew->pNext = NULL; //把pNew 新节点挂到pTail后面 pTial->pNext = pNew; pTial = pNew; } return pHead;}void travers(PNODE pHead){ if (empty(pHead)) return ; PNODE p = pHead->pNext; printf("["); while (NULL != p) { printf(" %d, ", p->data); p = p->pNext; } printf("]\n"); return;}bool empty(PNODE pNode){ if (NULL == pNode->pNext) return true; else return false;}int length(PNODE pNode){ int length = 0; PNODE p; p = pNode->pNext; while (NULL != p) { ++length; p = p->pNext; } return length;}void sort(PNODE pNode){ PNODE p, q; int i, j, t; int len = length(pNode); for (i = 0, p = pNode->pNext; i < len - 1; ++i, p = p->pNext) { for (j = i + 1, q = p->pNext; j < len - 1; q = q->pNext, ++j) { if (p->data > q->data){ t = p->data; p->data = q->data; q->data = t; } } }}bool insert(PNODE pNode, int pos, int val){ int i = 0; PNODE p = pNode; while (NULL != p->pNext && i > pos - 1) { p = p->pNext; ++i; } if (i > pos || NULL == p){ return false; } PNODE pNew = (PNODE)malloc(sizeof(NODE)); pNew->data = val; PNODE q = p->pNext; p->pNext = pNew; pNew->pNext = q; return true;}bool del(PNODE pNode, int pos, int * pVal){ int i = 0; PNODE p = pNode; while (NULL != p->pNext && i < pos - 1) { p = p->pNext; ++i; } if (i > pos - 1 || NULL == p->pNext){ return false; } PNODE q; q = p->pNext; *pVal = q->data; p->pNext = p->pNext->pNext; free(q); q = NULL; return true;}
阅读全文
0 0
- 链表创建和链表遍历操作
- 链表创建和链表遍历
- 链表的创建和遍历算法
- 链表的创建和遍历
- 链表的创建和遍历
- 链表的创建和遍历
- 单向链表的创建和遍历
- 简单链表的创建和遍历
- 单向链表的创建和遍历
- 链表创建和链表遍历算法
- 创建和遍历单向线性链表(C)
- 链表《1》链表的创建和遍历
- C语言链表的创建和遍历
- 链表的创建和操作
- 单向链表的创建和操作
- 链表的基础操作总结(链表创建,插入,删除,遍历等等)
- 单向链表的相关操作(创建,遍历,插入,删除,逆置)
- 双向链表的有关操作(创建,遍历,插入,删除)
- 你用TensorFlow做过哪些有趣的尝试?
- Discuz全版本任意文件删除漏洞
- Android SDK 26 源码下载失败问题解决
- Html和CSS布局技巧
- 各社交网站页面分享代码链接
- 链表创建和链表遍历操作
- java.lang.IllegalArgumentException:System memory 259522560 must be at least 4.718592E8
- Windows 安装配置MySQL
- 从数据库数据转json技巧
- 获取两个数组中相同的值
- 呼叫中心FAQ
- 渐进式 jpg,交错式 gif,交错式png
- 分页加载(类似网页)
- solr设置默认搜索字段<defaultSearchField>