?? 鏈表.cpp
字號:
#include<iostream>
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int ElemType;
typedef int status;
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
status Creat(LinkList &L,int n){
LinkList p,q;
int i;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;q=L;
for(i=0;i<n;i++){
p=(LinkList)malloc(sizeof(LNode));
cout<<"請輸入一個整數(shù)";
cin>>p->data;
q->next=p;
q=p;}
q->next=NULL;
return OK;
}
status GetElem(LinkList L,int i,ElemType&e){
int j;
LinkList p;
p=L->next;
j=1;
while(p&&j<i){
p=p->next;j++;}
e=p->data;
return OK;
}
status Delete(LinkList &L,int i,ElemType &e){
LinkList p,q;
int j;
p=L;j=0;
while(p->next&&j<i-1){
p=p->next;++j;
}
if((!p->next)||j>i-1) return ERROR;
q=p->next;
p->next=q->next;
e=q->data;free(q);
return OK;
}
status Insert(LinkList &L,int i,ElemType e){
LinkList p,s;
int j;
p=L;j=0;
while(p&&j<i-1){
p=p->next;++j;}
if(!p||j>i-1) return ERROR;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;s->next=p->next;
p->next=s;
return OK;
}
printf(LinkList L){
LinkList p;
p=L->next;
while(p!=NULL){
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
main(){
LinkList L1;
char x;
int n,i;
ElemType e;
cout<<"請輸入你的操作"<<endl;
cout<<"a插入 b查找 c刪除 退出q"<<endl;
cout<<"輸入你要建立個數(shù)n"<<endl;
cin>>n;
Creat(L1,n);
printf(L1);
cout<<endl;
while((x=getchar())!='q')
{
switch(x){
case'a':cout<<"輸入你要插入的位置第i個之前和值e"<<endl;cin>>i>>e;Insert(L1,i,e);cout<<"此鏈表現(xiàn)在為";
printf(L1);break;
case'b':cout<<"輸入你查找的元素位置第i個"<<endl;cin>>i;GetElem(L1,i,e);cout<<"這個數(shù)是:";cout<<e<<endl;
break;
case'c':cout<<"輸入你要刪除的元素位置第i個"<<endl;cin>>i;Delete(L1,i,e);cout<<"此鏈表現(xiàn)在為";
printf(L1);break;
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -