小鏈表

#include<iostream>

using namespace std;

struct node{       //定義節點//

int data;

node *next;

};

class sllist{      //單鏈表類的定義//

private:

node *head;

public:

sllist();

node *creat_list();   //創建鏈表的函數//

void print_list();     //輸出鏈表//

void find();              //存取//

void search();              //查找//

node * insert();          //插入//

node * del();            //刪除//

};//構造函數//

sllist::sllist(){

cout<<"警告:如果你輸入的數據超過鏈表的範圍程序會終止!"<<endl;

head=new node;

}//創建鏈表//

node * sllist::creat_list(){

int n=1;

node *p1,*p2;

p1=new node;

cout<<"請輸入第1個數據:"<<endl;

cin>>p1->data;

head->next=p1;

while(p1->data!=0){

n++;

p2=p1;

p1=new node;

p2->next=p1;

cout<<"請輸入第"<<n<<"個數據:"<<endl;

cin>>p1->data;

};

p2->next=NULL;

return 0;

}//打印鏈表//

void sllist::print_list(){

node *p;

int n=0;

p=head->next;

cout<<"你輸入的數據如下:"<<endl;

if(head!=NULL)

do

{

n++;

cout<<"第"<<n<<"個數據爲:"<<p->data<<endl;

p=p->next;

}while(p!=NULL);

}//存取//

void sllist::find(){

int k;

int i;

node *p;

cout<<"你要查找第?個數據:"<<endl;

cin>>k;

p=head->next;

if(head!=NULL)

for(i=0;i<k-1;i++)

p=p->next;

cout<<"你要查找的數據爲:"<<endl;

cout<<p->data<<endl;

}//查找//

void sllist::search(){

int item;

node *p;

int n=0;

p=head->next;

cout<<"請輸入你要查找的數據:"<<endl;

cin>>item;

if(head!=NULL)

do{

n++;

if(p->data==item)

cout<<"你要找的數據存在且是第"<<n<<"個"<<endl;

p=p->next;

}while(p!=NULL);

}//插入//

node * sllist::insert(){

int k,i;

int item;

int choice;

node *p=head->next,*temp;

cout<<"請輸入你要插入的數據的值:"<<endl;

cin>>item;

cout<<"要在鏈表頭增加請輸入1;否則請輸入2。"<<endl;

cin>>choice;

switch(choice)

{

case 1:temp=new node;

temp->data=item;

head->next=temp;

temp->next=p;

break;

case 2:cout<<"請問你要在第幾個節點後增加數據?:"<<endl;

cin>>k;

for(i=0;i<k-1;i++)

p=p->next;

temp=new node;

temp->data=item;

temp->next=p->next;

p->next=temp;

break;

default:break;

};

return head;

}//刪除//

node * sllist::del(){

node *p=head;

node *temp;

int k,i;

cout<<"請問你要刪除第幾個節點?"<<endl;

cin>>k;

for(i=0;i<k-1;i++)

p=p->next;

temp=p;

temp=temp->next;

p->next=temp->next;

return head;

}

int main(){

sllist x;

x.creat_list();

x.print_list();

x.find();

x.search();

x.insert();

x.print_list();

x.del();

x.print_list();

return 0;

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章