顺序表的查找/删除/插入
遇到的问题 malloc、realloc的用法
realloc:(类型 *)realloc(原来的内存地址,新的大小(*类型));
指针的问题:要深刻理解指针,指针也是一个变量,在函数传递参数的过程中,作为参数来讲,传递的也是值。这个值就是指针本身的内容,即指针指向的地址。而
不是传的指针。所以指针作为函数形参是一定要注意!
代码:
#include <iostream> #include <cstdlib> using namespace std; int Maxsize=10; typedef struct SeqListNode { int data; int len; }*SeqList; void createSeqList(SeqList &seqTable) { seqTable=( struct SeqListNode *) malloc (Maxsize* sizeof ( struct SeqListNode)); if (seqTable) { seqTable->len=0; for ( int i=0;i<Maxsize;i++) { seqTable[seqTable->len++].data=i; } } cout<< "create success" <<endl; } void insertNode(SeqList &seqTable, int elem, int i) { if (i<0) cout<< "i can not less than 0" <<endl; else { seqTable=( struct SeqListNode *) realloc (seqTable,(Maxsize+1)* sizeof ( struct SeqListNode)); if (seqTable) { for ( int j=seqTable->len;j>(i+1);j--) seqTable[j].data=seqTable[j-1].data; seqTable[i+1].data=elem; seqTable->len++; } } } int findElem(SeqList &seqTable, int elem) { int i; for ( i=0;i<seqTable->len;i++) { if (seqTable[i].data==elem) return i; } if (i>=seqTable->len) { cout<< "can not find the elem" <<endl; return -1; } } void deleteElem(SeqList &seqTable, int elem) { int i; int temp; for ( i=0;i<seqTable->len;i++) { if (seqTable[i].data==elem) { temp=seqTable[i].data; for ( int j=i;j<seqTable->len-1;j++) { seqTable[j].data=seqTable[j+1].data; } seqTable->len--; break ; } } if (i>=seqTable->len) { cout<< "can not find the elem" <<endl; } } void displaySeqList(SeqList &seqTable) { int i=0; while (i<seqTable->len) { cout<<seqTable[i].data<< " " ; i++; } cout<<endl; cout<<endl; } int main() { SeqList seqTable=NULL; createSeqList(seqTable); //create seqTable; cout<< "display:" ; displaySeqList(seqTable); insertNode(seqTable,12,3); //insert node; cout<< "after insert:" ; displaySeqList(seqTable); cout<< "6 position: " <<findElem(seqTable,6)<<endl<<endl;; //find element position; deleteElem(seqTable,7); cout<< "after delete:" ; displaySeqList(seqTable); free (seqTable); return 0; } |
运行结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述