#include<iostream>
using namespace std;
typedef struct node{
int num;
node * next;
}Node;
int insert(Node *head,int m){
int flag=1;
Node *n=head,*n1;
Node *p=new node;
p->num=m;
p->next=NULL;
if(n->num > p->num)
{
n->num=p->num-1;
}
while(n!= NULL && n->num < p->num) {
n1=n;
n=n->next;
}
n1->next=p;
p->next=n;
return flag;
}
int findlist(Node * head,int m)
{
Node *n=head;
while(n->next != NULL)
{
if(n->next->num == m)
return 1;
n=n->next;
}
return 0;
}
int delete_(Node * head,int m)
{
Node * n=head,*n1;
int flag=0;
if(head->next == NULL)
{
cout<<"该链表为空链表,不能删除";
}
while(n !=NULL && n->num != m){
n1=n;
n=n->next;
}
if(n!=NULL){
if(n->num == m){
n1->next=n->next;
delete n;
flag=1;
cout<<m<<"已经被删除了!"<<endl;
}
else
flag=0;
}
return flag ;
}
/*打印菜单指令*/
void instructions(void)
{
cout<<"Enter your choice:"<<endl
<<"1 插入一个元素到链表中./n"
<<"2 从链表中删除一个数./n"
<<"3 输入一个数查找是否存在./n"
<<"4 查看链表长度./n"
<<"5 结束退出./n"<<endl;
}
void print(Node * head){
Node *no=head->next;
cout<<"当前链表数为:"<<endl;
while(no->next != NULL){
cout<<no->num<<"-->";
no=no->next;
}
cout<<no->num<<endl;
}
int isEmpty(Node *head){
if(head->next == NULL)
return 1;
else return 0;
}
int listLength(Node *head){
int len=0;
Node * n=head;
while(n->next!=NULL)
{
n=n->next;
len++;
}
return len;
}
int main()
{
system("color 4e");
Node *head=new node;
head->next=NULL;
int choice;
int item,item1;
instructions();/*显示菜单函数*/
cout<<"请选择:";
cin>>choice;
while( choice!=5)
{
switch(choice)
{
case 1:
cout<<"请输入你想要插入的链表数:";
cin>>item;
if(insert(head,item))
{
cout<<item<<"已经成功顺序地插入链表中!"<<endl;
}
print(head);
break;
case 2:
if(!isEmpty(head)){
cout<<"请输入你要删除的数";
cin>>item;
if(delete_(head,item)){
cout<<item<<"被删除!"<<endl;
print(head);
}
else{
cout<<item<<"没有找到!"<<endl;
print(head);
}
}
else cout<<"链表为空,请先输入链表数,再查找!"<<endl;
break;
case 3:
if(!isEmpty(head)){
cout<<"Enter character to be found:";
cin>>item1;
if(findlist(head,item1))
cout<<"恭喜你,查找成功!"<<endl;
else cout<<item1<<" 没有被找到!"<<endl;
}
else cout<<"链表为空."<<endl;
break;
case 4:
cout<<"这个链表的长度为: "<<listLength(head)<<endl;
break;
case 5:
cout<<"结束运行!";
exit(0);
break;
default :
cout<<"Invalid choice."<<endl;
instructions();
}
cout<<"请选择:";
cin>>choice;
}
cout<<"结束运行."<<endl;
return 0;
}
花了好些时间写了,总是感觉收获了! 但是收获什么就不知道了。我的数据结构还是要慢慢地学习了!加油!