zoukankan      html  css  js  c++  java
  • 总结了一些指针易出错的常见问题(五)

    指针与链表及其操作

    //结构体定义
    typedef  struct _person{
        char* firstname;
        char* lastname;
        char* title;
        unsigned int age;
    }Person;
    Person person;
    //分配内存
    Person *ptrPerson;
    ptrPerson = (Person*) malloc (sizeof(Person));

      为结构体分配内存

    #include<stdio.h>
    
    int main()
    {
        typedef struct _alternatePerson{
            char* firstname;
            char* lastname;
            char* title;
            short age;
        }AlternatePerson;;
    
         //AlternatePerson otherperson;
         AlternatePerson people[30];
        typedef struct _Person{
            char* firstname;
            char* lastname;
            char* title;
            unsigned int age;
        }Person; 
        Person person;
        
        printf("%d
    ",sizeof(Person));
        printf("%d
    ",sizeof(people));
        return 0;
        
    }

      指针支持数据结构

    链表

    队列

    树(二叉树)

      

    队列是一种现行数据结构,行为类似排队,(入队和出队)

    /*写一函数建立一个有3名学生数据的单向动态链表*/
     #include<stdio.h>
     #include<malloc.h>
     //#define NULL 0
     #define LEN sizeof(struct student)
     
     struct student
     {
         long num;
         float score;
         struct student *next;
      };
      int n;
      struct student *creat(void)
      {
          struct student *head;
          struct student *p1,*p2;
          n=0;
          p1=p2=(struct student*)malloc(LEN);
          scanf("%ld,%f",&p1->num,&p1->score);
          head=NULL;
          while(p1->num!=0)
          {
              n=n+1;
              if(n==1) head=p1;
              else
              p2->next=p1;
              p2=p1;
              p1=(struct student*)malloc(LEN);
              scanf("%ld,%f",&p1->num,&p1->score);
           } 
           p2->next=NULL;
           return(head);
      }
      
      void print(struct student *head)
      {
          struct student *p;
          printf("
     Now,These %d record are:
    ",n);
          p=head;
          if(head!=NULL)
              do
              {
                  printf("%ld %5.1f
    ",p->num,p->score);
                  p=p->next;
              }while(p!=NULL);
      }
      
      struct student *del(struct student *head,long num)
      {
          struct student *p1,*p2;
          if(head==NULL) {printf("
    list is NULL.
    "); return head; }
          p1=head;
          while(num!=p1->num&&p1->next!=NULL)
          {
              p2=p1;p1=p1->next;
        }
        if(num==p1->num)
        {
            if(p1==head) head=p1->next;
            else p2->next=p1->next;
            printf("delete:%ld
    ",num);
            n=n-1;
        }
        else printf("%ld not have been found: 
    ",num);
        return (head);
      }
     
     /* insert */
     struct student *insert(struct student *head,struct student *stud)
     {
         struct student *p0,*p1,*p2;
         p1=head;
         p0=stud;
         if(head==NULL) { head=p0;p0->next=NULL;}
         else 
             {
                 while((p0->num>p1->num)&&(p1->next!=NULL))
                 {
                     p2=p1;
                     p1=p1->next;
                 }
                 if(p0->num<=p1->num){
                     if(head==p1) head=p0;
                     else p2->next=p0;
                     p0->next=p1;
                 }
                 else
                 {
                     p1->next=p0;p0->next=NULL;
                 }     
             }
              n=n+1;
              return(head);
     }
     int main()
     {
          struct student *head,stu;
          long del_num;
          printf("input records: 
    ");
          head=creat();
          print(head);
          printf("
     input the deleted number:");
          scanf("%ld",&del_num);
          head=del(head,del_num);
          print(head);
          printf("
     input the inserted record:");
          scanf("%ld,%f",&stu.num,&stu.score);
          head=insert(head,&stu);
          print(head);
     }
  • 相关阅读:
    理想中的分布式架构
    nginx+tomcat动静分离的核心配置
    Liunx下Tomcat+MYSQL+Nginx配置
    Nginx+Tomcat动静态资源分离
    Nginx+Keepalived+Tomcat之动静分离的web集群
    linux tomca几个配置文件及点
    redis实现spring-redis-data的入门实例
    Redis缓存 ava-Jedis操作Redis,基本操作以及 实现对象保存
    Oracle VM Virtual Box 4.3 小巧精悍的虚拟机软件
    Ubuntu下配置 keepalived+nginx+tomcat 负载均衡
  • 原文地址:https://www.cnblogs.com/iloverain/p/5612215.html
Copyright © 2011-2022 走看看