‘6’型链表

    xiaoxiao2023-12-01  158

    /* '6'型链表     描述,有一个形式为'6'型的链表 求解交点的数值 */ #include<iostream> using namespace std; typedef struct node{     int value;     struct node *next; }List; /*创建单向链表*/ void Create(List* &Head,List* &End,int arr[],int Count) {     if(Count <=0)  return ;     int nodevalue = 0;     List *node = NULL;     for(int i=0;i<Count;i++){         nodevalue = arr[i];         node= new List;         node->value = nodevalue;         node->next = NULL;         if(Head== NULL){             Head  = node;         }         else{             End->next = node;         }         End = node;     } } /*遍历单向链表*/ void Traval(List* &Head,List* &End) {     if(Head == NULL || End == NULL)  return ;     List * ptr = Head;     while(ptr != NULL){         cout<<ptr->value<<" ";         ptr = ptr->next;     }     cout<<endl; } /*获取单向链表长度*/ void Length(List* &Head,List* &End,int &length) {     if(Head == NULL || End == NULL)           length =0;         return ;     List* ptr = Head;     length =0;     while(ptr != NULL){         length++;         ptr= ptr->next;     } } /*查找交点数值*/ void FindNodeValue(List* &Head,int &Result) {     if(Head == NULL)  return ;     List* ptr_1 = Head->next;     List* ptr_2 = Head->next->next;     while(ptr_1 != ptr_2){         ptr_1 = ptr_1->next;         ptr_2 = ptr_2->next->next;     }     int count = 1;     ptr_2 = ptr_2->next;     while(ptr_1 != ptr_2){         count++;         ptr_2 = ptr_2->next;     }     cout<<count<<endl;     ptr_1 = Head;     ptr_2 = Head;     while(count > 0){         ptr_1 = ptr_1->next;         count--;     }     cout<<ptr_1->value<<endl;     while(ptr_1 != ptr_2){         ptr_1= ptr_1->next;         ptr_2 = ptr_2->next;     }     Result = ptr_1->value; }

    int main() {     int arr[] = {4,3,5,6,3,7,4,5,2,6};     List *Head= NULL ,*End = NULL;     Create(Head,End,arr,sizeof(arr)/sizeof(int));     int count = 4;     List* ptr = Head;     while(count > 0){         ptr = ptr->next;         count--;     }     cout<<ptr->value<<endl;     End->next = ptr;     int Result =0;     FindNodeValue(Head,Result);     cout<<Result<<endl;     system("pause");     return 0; }

    最新回复(0)