设为首页 加入收藏

TOP

对链表的相关操作及数据结构的再理解 (三)
2014-11-23 22:04:07 来源: 作者: 【 】 浏览:16
Tags:相关 操作 数据结构 理解
ool DeleteNode(PNODE pHead,int pos,int *pVal) { int i=0; PNODE p=pHead,q; while(NULL!=p->pNext&&ipNext; ++i; } if(i>pos-1||NULL==p) return false; q=p->pNext; *pVal=q->data; p->pNext=p->pNext->pNext; free(q); q=NULL; return true; } void SortList(PNODE pHead) { int i,j,t; int len=Length(pHead);//用len来保存链表的长度 PNODE p,q; for(i=0,p=pHead->pNext;ipNext,i++)//比较趟数 { for(j=i+1,q=p->pNext;jpNext,j++)//比较对数 { if(p->data>q->data) { t=p->data; p->data=q->data; q->data=t; } } } } bool QueryNode(PNODE pHead,int pos) { int i=0; PNODE p=pHead,q; while(NULL!=p->pNext&&ipNext; ++i; } if(i>pos-1||NULL==p) return false; q=p->pNext; printf("第%d号位置上结点的值为:%d\n",pos,q->data); return true; } bool ModifyNode(PNODE pHead,int pos,int val) { int i=0; PNODE p=pHead,q; while(NULL!=p->pNext&&ipNext; ++i; } if(i>pos-1||NULL==p) return false; q=p->pNext; q->data=val; printf("修改第%d号位置上结点的值为:%d\n",pos,q->data); return true; }

注意:
1.在vc++中,c编译器不支持bool函数,但c++编译器支持,所以这里我用的是c++编译器。
2.c编译过程中常见错误:illegal use of this type as an expression 是由于 c语言不允许临时定义变量,所有定义的变量都必须放在函数开头,这也是c和c++的重要区别
数据结构的再理解
狭义上的理解:数据结构是专门研究数据存储(包括个体的存储和个体关系的存储)问题。
广义上的理解:数据结构既包含数据的存储也包含数据的操作。算法是对存储数据的操作。
算法:
狭义上的理解:算法和数据的存储方式密切相关
广义上的理解:算法和数据的存储方式无关(这就是泛型的思想)
泛型:利用某种技术达到的效果就是不同的存储方式,执行的操作是一样的。泛型主要通过模板,运算符的重载,指针来实现,在c++中经常用到。
补充
线性结构:
连续存储【数组】
优点:存取速度快
缺点:插入删除元素很慢,空间通常是有限制的,事先必须知道数组的长度,而且需要大块连续内存块
离散存储【链表】
优点:插入删除元素很快,空间没有限制的;
缺点: 存取速度很慢
首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C陷阱与缺陷代码分析之第1章词法.. 下一篇C 语言统计关键字出现次数

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: