单向链表的反转

来源:互联网 发布:怪物猎人x数据库多玩 编辑:程序博客网 时间:2024/06/05 01:56
#include <iostream>#include <iomanip>#include <ctime>#include <cstdlib>using namespace std;class list{public: int num,score;char name[10];class list *next;};typedef class list node;typedef node *link;int main(){  link ptr,last,before;int i,j,findword=0,data[12][2];char namedata[12][10]={{"Allen"},{"Mako"},{"Lean"},    {"Melissa"},{"Angel"},{"Sabrina"},{"Joyce"},    {"Jasica"},{"Hanson"},{"Amy"},{"Bob"},{"Jack"}};srand((unsigned)time(NULL));for (i=0;i<12;i++){  data[i][0]=i+1;data[i][1]=rand()%50+51;}link head=new node;//建立链表头指针if(!head){  cout<<"Error!! 内存分配失败!!"<<endl;exit(1);}head->num=data[0][0];for (j=0;j<10;j++)head->name[j]=namedata[0][j];head->score=data[0][1];head->next=NULL;ptr=head;for(i=1;i<12;i++) //建立链表{  link newnode=new node;newnode->num=data[i][0];for (j=0;j<10;j++)newnode->name[j]=namedata[i][j];newnode->score=data[i][1];newnode->next=NULL;ptr->next=newnode;ptr=ptr->next;}ptr=head;i=0;cout<<"原始链表数据:"<<endl;               while (ptr!=NULL)                       {   //打印链表数据cout<<"["<<setw(2)<<ptr->num<<setw(8)        <<ptr->name<<setw(3)<<ptr->score<<"] -> ";i++;if(i>=3) //三个元素为一行{  cout<<endl;i=0;}ptr=ptr->next;}ptr=head;before=NULL;cout<<"\n反转后链表数据:"<<endl;          while(ptr!=NULL) //链表反转{  last=before;before=ptr;ptr=ptr->next;before->next=last;}ptr=before;while(ptr!=NULL){  cout<<"["<<setw(2)<<ptr->num<<setw(8)        <<ptr->name<<setw(3)<<ptr->score<<"] -> ";i++;if(i>=3){  cout<<endl;i=0;}ptr=ptr->next;}system("pause");}

原创粉丝点击