呵呵,今天发个数据结构的作业。
// 链表.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
class student
{
public:
int num;
student *next;
};
int n;
student *create(void)
{
cout<<"创建链表"<<endl;
student *head;
student *p1,*p2;
n=0;
p1=p2=new student;
cin>>p1->num;
head=NULL;
while(p1->num!=0)
{
n=n+1;
if(n==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=new student;
cin>>p1->num;
}
p2->next=NULL;
cout<<"链表创建结束"<<endl;
return(head);}
void *print (student *head)
{cout<<"现在开始打印链表"<<endl;
student *p;
p=head;
for(;p!=NULL;)
{cout<<p->num<<endl;
p=p->next;}
return 0;
}
student *research(student *head)//查找节点
{cout<<"现在开始查找节点"<<endl;
student *p;
p=head;
int n;
cout<<"要查找的节的的值"<<endl;
cin>>n;//输入所要查找的节点的值
for(;p->num!=n;)
{
p=p->next;
}
cout<<p->num;
return (head);
}
student *del(student *head)
{cout<<"现在开始删除节点"<<endl;
student *p,*s;
p=head;
int i,n;
cout<<"输入要删除的节点"<<endl;
cin>>n;
for(i=1;i<n;i++)
{
s=p;
p=p->next;
}
if(i=n-1)
{
if(p==head)
{
head=p->next;
}
else
s->next=p->next;
}
return (head);
}
student *insert(student *head)//插入节点(后插形)
{cout<<"现在插入节点"<<endl;
student *p1,*p2,*s;
p1=head;
p2=p1->next;
s=new student;
cout<<"输入要插入的数据"<<endl;
cin>>s->num;
int n,i;
cout<<"输入节点位置"<<endl;
cin>>n;
cout<<"q2"<<endl;
for(i=0;i<n;i++)
{
cout<<"q"<<i<<endl;
p1=p1->next;
p2=p2->next;
}
p1->next=s;
s->next=p2;
cout<<head->num;
return (head);
}
student *bianli(student *head)//建立遍历
{
student *p;
char p1;
p=head;
cout<<"输入N继续 "<<endl;
cout<<"输入其他字符正常运行"<<endl;
for(;p!=NULL;)
{
cin>>p1;
if(p1=='N')
{cout<<"继续";
p=p->next;
}
else
{
cout<<"要修改的数据"<<endl;
cin>>p->num;
p=p->next;
}
}
return (head);
}
int main()
{
student *head;
head=create();
print(head);
insert(head);
print(head);
del(head);
print(head);
bianli(head);
print(head);
research(head);
print(head);
return 0;
}
数据结构——动态链表
最新推荐文章于 2024-05-14 09:36:08 发布