赞
踩
#include <stdio.h> #include <iostream> using namespace std; #define elemType int typedef struct node { elemType data;//类型为int 如何预定义#define 为elemType,从而实现松耦合 node* next; }*nodePtr; void initLinkList(nodePtr &list){ nodePtr head =new node[1]; //使指针变量(头结点)存在于堆内存 head->next=NULL; list=head; } void findPos(nodePtr list,int pos,nodePtr &ptr) { int cal=0;//累加器 while(list&&cal<pos){ list=list->next; cal++; } if(!list){ ptr=NULL; cout<<"该位置不存在变量"<<endl; return; } ptr=list; return; } void insertLinkList(nodePtr &list,int pos,elemType val){ nodePtr ptr; findPos(list,pos-1,ptr); if(!ptr){ cout<<"对不起,没有这个位置"<<endl; return; } nodePtr newNode =new node[1]; newNode->data=val; newNode->next=ptr->next; ptr->next=newNode; return; } void deleteLinkList(nodePtr &list,int pos,elemType &val){ nodePtr ptr; findPos(list,pos-1,ptr); if(!ptr){ cout<<"对不起,没有这个位置"<<endl; return; } val=ptr->next->data;//删除元素的数据val nodePtr temp=ptr->next; ptr->next=ptr->next->next; delete temp;//销毁删除元素的空间,防止内存泄露 //等价于 free(temp);手动回收temp空间 } void displayLinkList(nodePtr list){ list=list->next; int num=1; while(list){ cout<<"单链表中的第"<< num<<"个元素为:"<<list->data<<endl; num++; list=list->next; } if(!list){ return; } } int main() { nodePtr list; initLinkList(list); insertLinkList(list ,1,100); insertLinkList(list ,2,200); insertLinkList(list ,3,300); insertLinkList(list ,4,400); displayLinkList(list);// nodePtr ptr=NULL;//定义一个空指针变量来存储找到的元素(指针变量) findPos(list,6,ptr); findPos(list,2,ptr); cout<<ptr->data<<endl; elemType val; deleteLinkList(list,3,val); cout<<"被删除的元素为:"<<val<<endl; deleteLinkList(list,3,val); cout<<"被删除的元素为:"<<val<<endl; return 0; }在这里插入代码片
运行结果截图如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。