一.线性表
2.单链表
完整代码:
#include <iostream>
#define ERROR 0
#define OK 1
#define OVERFLOW -2
using namespace std;
typedef int ElemType;
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
int InitList(LinkList &L){
L=new LNode;
L->next=NULL;
cout<<"初始化成功!"<<endl;
return OK;
}
int Output(LinkList &L,int i){
LinkList p=L->next;
while(p){
cout<<p->data<<' ';
p=p->next;
}
cout<<endl;
}
LNode *LocateElem(LinkList L,ElemType e){
LinkList p=L->next;
while(p&&p->data!=e) p=p->next;
if(p) cout<<"查找成功!"<<endl;
else cout<<"查找失败!请核查是否原链表存在此值!"<<endl;
}
int ListInsert(LinkList &L,int i,ElemType e){
LinkList p=L;
int j=0;
while(p&&(j<i-1)){
p=p->next;
++j;
}
if(!p||j>i-1) return ERROR;
LinkList s=new LNode;
s->data=e;
s->next=p->next;
p->next=s;
return OK;
}
int ListDelete(LinkList &L,int i){
LinkList p=L;
int j=0;
while((p->next)&&(j<i-1)){
p=p->next;
++j;
}
if(!(p->next)||(j>i-1)) return ERROR;
LinkList q=p->next;
p->next=q->next;
delete q;
return OK;
}
int main(int argc, char** argv) {
LNode *MYL;
char a;
a='Y';
int data,i,num;
int key=0;
InitList(MYL);
cout<<"请输入元素个数:"<<endl;
cin>>num;
int current=num;
int tar;
cout<<"创建新链表~~请输入元素:"<<endl;
for(int x=1;x<=num;x++){
cin>>tar;
ListInsert(MYL,x,tar);
}
cout<<"新链表如下:"<<endl;
Output(MYL,num);
while(a=='Y'){
cout<<"请选择你需要的帮助(0=定位,1=插入,2=删除)"<<endl;
cin>>key;
if(key==0){
cout<<endl<<"请输入所需要定位的元素:";
cin>>data;
LocateElem(MYL,data);
}
if(key==1){
cout<<endl<<"请输入要插入的元素:";
cin>>data;
cout<<endl<<"请输入要插入的位置:";
cin>>i;
ListInsert(MYL,i,data);
current=current+1;
Output(MYL,current);
}
if(key==2){
cout<<endl<<"请输入要删除的位置:";
cin>>i;
ListDelete(MYL,i);
current=current-1;
Output(MYL,current);
}
cout<<endl<<"请问是否继续?(Y:继续 N:结束)"<<endl;
getchar();
cin>>a;
}
return 0;
}
ps: 这些博客简单一些,算是学习数据结构的一些记录。