• 单向链表>单向循环链表


      1 #include <stdio.h>
      2 #include <iostream>
      3 #include <stdlib.h>
      4 
      5 using namespace std;
      6 
      7 struct Person{
      8     int age;
      9     struct Person *next;
     10 };
     11 Person *CrtHeadNode(){
     12     Person *head ,*tmp;
     13     head = tmp = NULL;
     14     Person *p=NULL;
     15     int n;
     16     cout<<"Node Number:"<<endl;
     17     cin>>n;
     18     for(int i = 0;i<n;i++){
     19         tmp = new Person;//(Person*)(malloc(sizeof(Person)));
     20         cout<<"Age:" <<endl;
     21         cin >>tmp->age;
     22         tmp->next=NULL;
     23         if(head){
     24             tmp->next = head;
     25             head  = tmp ;
     26         }else{
     27 
     28             p = head = tmp;
     29         }
     30     }
     31     p->next = head;
     32     return head;
     33 }
     34 
     35 Person *CrtTailNode(){
     36     Person *head,*tail,*tmp;
     37     int n;
     38     cout<<"Node Number:"<<endl;
     39     cin>>n;
     40     head = tail = tmp = NULL;
     41     for(int i = 0;i<n;i++){
     42         tmp = new Person;//(Person*)(malloc(sizeof(Person)));
     43         cout<<"Age:" <<endl;
     44         cin >>tmp->age;
     45         if(head){
     46             while(tail->next!=head){
     47                 tail = tail->next;
     48             }
     49             tail->next = tmp;
     50             tail = tmp;
     51             tmp->next=head;
     52     //        head = tail->next;
     53         }else{
     54             head = tail = tmp;
     55             tmp->next=head;
     56     //        head = tail->next;
     57         }
     58     }
     59     return head;
     60 }
     61 Person *FindNode(Person *head,int age){
     62     Person* tmp;
     63     tmp = NULL;
     64     tmp = head;
     65     do{
     66         if(tmp->age == age){
     67             break;
     68         }
     69         tmp  = tmp->next;
     70     }while(tmp!=head);
     71     if(tmp==head){
     72         return NULL;
     73     }
     74     
     75     /*
     76     while(tmp!=NULL){
     77         if(tmp->age ==age){
     78             break;
     79         }
     80         tmp = tmp->next;
     81     }
     82     if(tmp==NULL){
     83         return NULL;
     84     }*/
     85     return tmp;
     86     
     87 }
     88 int DelNode(Person *head,int age){
     89     Person *tmp;
     90     tmp = NULL;
     91     tmp = head;
     92     do{
     93         if(tmp->next->age == age){
     94             break;
     95         }
     96         tmp  = tmp->next;
     97     }while(tmp!=head);
     98     if(tmp==head){
     99         return 1;
    100     }
    101     /*
    102     while(tmp->next!=NULL){
    103         if(tmp->next->age==age){
    104             break;
    105         }
    106         tmp = tmp->next;
    107     }
    108     if(tmp->next==NULL){
    109         cout<<"DEL NOT FIND!"<<endl;;
    110         return 1;
    111     }*/
    112     else{
    113         Person *find = NULL;
    114         find  = tmp->next;
    115         tmp->next = find->next;
    116         free(find);
    117 //        delete find;
    118     }
    119     return 0;
    120 
    121 }
    135 
    136 void show(Person *head){
    137 
    138 /*    if(head==NULL){
    139         cout<<"Empty"<<endl;
    140     }
    141     */
    142     
    143     Person *p;
    144     p = head->next;
    145     cout<<head->age<<endl;
    146     while(p!=head){
    147         cout<<p->age<<endl;
    148         p = p->next;
    149     }
    150 /*
    151     Person *p = head;
    152     do{
    153         cout<<p->age<<endl;
    154         p = p->next;
    155     }while(p!=head);*/
    156 }
    157 int main(){
    158     Person *p;
    159     Person *find;
    160     p = CrtHeadNode();
    161 //    p = CrtTailNode();
    162 //    MakeEmptyNode(p);
    163     
    164     
    165     find = FindNode(p,10);
    166     if(find==NULL){
    167         cout<<"Not find"<<endl;
    168     }else{
    169         cout<<"FindNode is:"<<find->age<<endl;
    170     }
    171     
    172     int n=    DelNode(p,10);
    173     if(!n){
    174         cout<<"del success!"<<endl;
    175     }/*
    176     find = FindNode(p,10);
    177     if(find==NULL){
    178         cout<<"Not find"<<endl;
    179     }else{
    180         cout<<"FindNode is:"<<find->age<<endl;
    181     }*/
    182     show(p);
    183     return 0;
    184 }
  • 相关阅读:
    js无缝滚动
    java判断指定路径文件夹是否存在,若不存在则创建新的文件夹
    oracle使用Union时遇到列格式clob和varchar2不符,不能转的问题
    Oracle之clob字段不能union的问题
    poi导出word表格跨行
    将文件File转换成byte数组
    poi导出word表格
    JSTL跳出<c:forEach>循环
    jquery数组倒序
    [创业] 07:融资
  • 原文地址:https://www.cnblogs.com/zhangsf/p/2750024.html
Copyright © 2020-2023  润新知