codeup id=1814 剩下的樹
阿新 • • 發佈:2018-12-17
程式碼錯誤50%
#include<iostream> #include<stdlib.h> #define Maxsize 1000 using namespace std; typedef struct node { struct node* prior; struct node* next; int data; }NODE,*PNODE; /********遍歷連結串列 *****/ int traverse_list(PNODE r,PNODE L) { r=L; while(r->next!=NULL) { r=r->next; printf(" %d",r->data); } return 0; } /********連結串列節點統計*****/ int court_list_node(PNODE r,PNODE L,int &x) { r=L->next; while(r!=NULL) { x++; r=r->next; } return 0; } /********連結串列查詢元素 *****/ int findElement_prior_next(PNODE L,PNODE r,int e,int m,int v,PNODE &K)//連結串列頭參考點,遍歷指標,查詢值,連結串列區間值 ,返回指標 { r=L; K=L; while(r!=NULL) {if(r->data==e) if(v==1) K=r->prior; else if(v==2) K=r->next; r=r->next; } return 0; } /********建立連結串列 *****/ void creatlist(PNODE S,PNODE P,int m) { for(int j=0;j<=m;j++) { S=(PNODE)malloc(sizeof(NODE)); S->data=j; P->next=S; S->prior=P; P=P->next; //S=P->next; } P->next=NULL; } int main() {PNODE Phead,S,P,r,M1[Maxsize],M2[Maxsize],rear; int m,left[Maxsize],right[Maxsize],NO; int number=0; // cout<<"輸入數值範圍0~m"<<endl; while(cin>>m>>NO) {if(m>10000||m<1) break; if(NO<0||NO>100) break; Phead=NULL; Phead=(PNODE)malloc(sizeof(NODE));//建立 表頭 P=Phead; M1[0]=M2[0]=Phead; creatlist(S,P,m);//建立連結串列 //traverse_list(r,Phead);//遍歷連結串列 // cout<<endl; //cout<<"輸入幾組區間"<<endl; for(int i=0,v=1;i<NO;i++,v++) { //cout<<"輸入第"<<v<<"組區間"<<endl; cin>>left[i]>>right[i]; r=Phead; findElement_prior_next(Phead,r,left[i],m,1,M1[i]); findElement_prior_next(Phead,r,right[i],m,2,M2[i]); } for(int i=0;i<NO;i++) { if(left[i]<=left[i-1]&&right[i]>=right[i-1])//後一個區間包含前一個區間 { M1[i]->next=M2[i]; M2[i]->prior=M1[i];} else if(left[i]>=left[i-1]&&right[i]<=right[i-1]) { M1[i-1]->next=M2[i-1]; M2[i-1]->prior=M1[i-1];} else if(left[i]>right[i-1])//後一個區間與前一個區間不相關 {M1[i]->next=M2[i]; M2[i]->prior=M1[i]; } else if(right[i-1]>=left[i])//後區間左區域在前區間內 { M1[i-1]->next=M2[i]; M2[i]->prior=M1[i-1]; } } //r=Phead; // traverse_list(r,Phead);//遍歷連結串列 // cout<<endl; // cout<<"剩餘節點數量"<<endl; number=0; court_list_node(r,Phead,number); cout<<number<<endl; } return 0; }