博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ 要注意的东西
阅读量:6076 次
发布时间:2019-06-20

本文共 2591 字,大约阅读时间需要 8 分钟。

hot3.png

1.一定要验证非法输入
2.一定要小心非法溢出
3.一定要释放申请的堆

4.一定不要做重复的自己,重复编写一样功能的程序

本代码有bug,在哪里自己找,呵呵(提示,插入和打印的是否相符)这个链表有个好的地方就是用char*可以实现你要存储的任何数据,大块也行,小块也行

/***this is dlist.h***/struct _node{ _node* prev; _node* next; void* data; int len;};typedef _node Node;void NodeFind(Node* node,void* data,int len);void NodeInsert(Node* node,void* data,int len);int NodeDelete(Node* node,void* data,int len);void NodePrint(Node* node);
/*****	this is dlist.cpp*****/#include "dlist.h"#include 
#include
#include
void Print(void* data,int len);int Compare(void* data,void* data1,int len);void NodeFind(Node* node,void* data,int len){ Node* tmpnode = node; while(tmpnode->next) { if (Compare(tmpnode->data,data,len)==0) { printf("Find it \n"); } else tmpnode = tmpnode->next; }}void NodeInsert(Node* node,void* data,int len){ Node* tmpnode = node; while(tmpnode->next) { tmpnode = tmpnode->next; } tmpnode->next = new Node; tmpnode->data = (void*)malloc(sizeof(char)*len); tmpnode->next->prev = tmpnode; tmpnode->next->next = 0; tmpnode->next->len = 0; memcpy(tmpnode->data,data,len); tmpnode->len = len; }int NodeDelete(Node* node,void* data,int len){ Node* tmpnode = node; while(tmpnode->next) { if(Compare(tmpnode->data,data,len)==0) { tmpnode->prev->next = tmpnode->next; free(tmpnode->data); tmpnode->data=0; tmpnode->len=0; tmpnode->next=0; tmpnode->prev=0; delete tmpnode; return 0; // Find the item and delete succeed; } tmpnode = tmpnode->next; } return -1; // dont find the item; }void NodePrint(Node* node){ Node* tmpnode = node->next; while(tmpnode->next) { Print(tmpnode->data,tmpnode->len); tmpnode = tmpnode->next; }}int Compare(void* data,void* data1,int len){ char* tmp=(char*)data; char* tmp1=(char*)data1; for(int i=0;i
/* run this program using the console pauser or add your own getch, system("pause") or input loop */#include 
#include
#include
using namespace std;#include "dlist.h"int main(int argc,char* argv[]){ Node* dlist = new Node; dlist->next = 0; dlist->prev = 0; for(int i=0;i<100;i++) { char in[4]={0}; itoa(i,in,10); NodeInsert(dlist,in,4); } NodePrint(dlist); std::cout<
>in; if(!NodeDelete(dlist,(void*)in,4)) std::cout << "Delete the item sucessful"<
> in1; NodeInsert(dlist,in1,10); NodePrint(dlist); return 1;}

转载于:https://my.oschina.net/u/230229/blog/109992

你可能感兴趣的文章
json+underscore+Node 小例子
查看>>
Google Play市场考察报告
查看>>
***浅析JQuery中的html(),text(),val()区别
查看>>
数组与对象的转换
查看>>
Entity Framework Code-First(9.1):DataAnnotations - Key Attribute
查看>>
yii2异常
查看>>
未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项.试图加载格式不正确的程序...
查看>>
Java基础之 反射是什么?
查看>>
pycharm 激活码激活
查看>>
web api Route属性定义
查看>>
android学习笔记 activity生命周期&任务栈&activity启动模式
查看>>
android中的线程池学习笔记
查看>>
http的session和cookie
查看>>
Lucene.Net 优化索引生成,即搜索显示优化
查看>>
如何同时启动两个Android模拟器
查看>>
c语言——结构体做函数参数
查看>>
第一章
查看>>
媒体该如何展示事实之美?
查看>>
js功能比较全面的yyyy-MM-dd格式的日期验证正则
查看>>
WPF中的命令路由
查看>>