张一林//2018.07.24

苏嵌                                                                                                                              项目实战

学习日志                                     姓名:张一林       日期:07.24

 

 

 

 

今日学习任务

 

链表(链表的写法,单链表(有表头的,无表头的))

插入结点(头插,尾插,中间插入)

删除结点

逆序

今日任务完成情况

 

(详细说明本日任务是否按计划完成,开发的代码量)

链表(链表的写法,单链表(有表头的,无表头的))

插入结点(头插,尾插,中间插入)

删除结点

逆序

今日开发中出现的问题汇总

 

 

今日未解决问题

 

今日开发收获

今天主要是把单链表的知识和写法教了一遍,对于如何编写,需要掌握的是如何编写链表,如何插入结点,插入结点又分头插,尾插,中间插入;接着还有如何删除一个结点以及链表的逆序

 

自我评价

 

(是否按开发规范完成既定任务,需要改进的地方,与他人合作效果等)

 

 

今天主要是把单链表的知识和写法教了一遍,对于如何编写,需要掌握的是如何编写链表,如何插入结点,插入结点又分头插,尾插,中间插入;接着还有如何删除一个结点以及链表的逆序

其他

 

 

 

 

 

 

                                                                                                                                                                                                                                                                                                                                                                                                                                       1. #include<stdio.h>

 

struct node

{

    int num;

    struct node *next;

};

 

 

int main()

{

    struct node *p1 = (struct node *)malloc(sizeof(struct node));

    struct node *p2 = (struct node *)malloc(sizeof(struct node));

    struct node *p3 = (struct node *)malloc(sizeof(struct node));

   

    p1->num = 1;

    p1->next = p2;

    p2->num = 2;

    p2->next = p3;

    p3->num = 3;

    p3->next = NULL;

   

    struct node *head = p1;

    while(head != NULL)

    {

        printf("%d\n",head->num);

        head = head->next;

    }

   // printf("p2.num = %d\n",p2.num);

    return 0;

}

 

2. #include<stdio.h>

 

struct node

{

    int num;

    struct node *next;

};

 

typedef struct node Node;

typedef Node * link;

 

void creat_link(link *head)

{

    *head = NULL;

}

 

void insert_head_link(link newnode,link *head)

{

    if(*head == NULL)

    {

        newnode->next = NULL;

       *head = newnode;

    }

    else

    {

        newnode->next = *head;

        *head = newnode;

    }

}

 

void display_link(link head)

{

    link temp = head;

    while(temp != NULL)

    {

        printf("%d\n",temp->num);

        temp = temp->next;

    }

}

 

int main()

{

    int i;

    link head;

    link newnode;

    creat_link(&head);

    for(i = 0;i < 10;i++)

    {

        newnode = (link)malloc(sizeof(Node));

        newnode->num = i + 1;

        insert_head_link(newnode,&head);

    }

    display_link(head);

    return 0;

}

 

3. #include<stdio.h>

 

struct node

{

    int num;

    struct node *next;

};

 

typedef struct node Node;

typedef Node * link;

 

void creat_link(link *head)

{

    *head = NULL;

}

 

void insert_tail_link(link newnode,link *head)

{

    link temp = *head;

    if(*head == NULL)

    {

        newnode->next = NULL;

       *head = newnode;

    }

    else

    {

        while(temp->next != NULL)

        {

            temp = temp->next;

        }

            temp->next = newnode;

            newnode->next = NULL;

    }

}

 

void display_link(link head)

{

    link temp1 = head;

    while(temp1 != NULL)

    {

        printf("%d\n",temp1->num);

        temp1 = temp1->next;

    }

}

 

int main()

{

    int i;

    link head;

    link newnode;

    creat_link(&head);

    for(i = 0;i < 10;i++)

    {

        newnode = (link)malloc(sizeof(Node));

        newnode->num = i + 1;

        insert_tail_link(newnode,&head);

    }

    display_link(head);

    return 0;

}

 

4. #include<stdio.h>

 

enum m

{

    EMPTY = 0,

    INSERT_FAIL,

    INSERT_SUCCESS

};

 

struct node

{

    int num;

    struct node *next;

};

 

typedef struct node Node;

typedef Node * link;

 

void creat_link(link *head)

{

    *head = NULL;

}

 

int insert_mid_link(link newnode,link *head,int num)

{

    link temp = *head;

    if(*head == NULL)

    {

        return EMPTY;

    }

    else

    {

        while(temp != NULL)

        {

            if(temp->num == num)

            {

                newnode->next = temp->next;

                 temp->next = newnode;

                return INSERT_SUCCESS;

            }

            temp = temp->next;

        }

        return INSERT_FAIL;

    }

 

 

}

 

void insert_tail_link(link newnode,link *head)

{

    link temp = *head;

    if(*head == NULL)

    {

        newnode->next = NULL;

       *head = newnode;

    }

    else

    {

        while(temp->next != NULL)

        {

            temp = temp->next;

        }

            temp->next = newnode;

            newnode->next = NULL;

    }

}

 

void display_link(link head)

{

    link temp1 = head;

    while(temp1 != NULL)

    {

        printf("%d\n",temp1->num);

        temp1 = temp1->next;

    }

}

 

int main()

{

    int i;

    link head;

    link newnode;

    creat_link(&head);

    for(i = 0;i < 10;i++)

    {

        newnode = (link)malloc(sizeof(Node));

        newnode->num = i + 1;

        insert_tail_link(newnode,&head);

    }

    display_link(head);

   

    newnode = (link)malloc(sizeof(Node));

    newnode->num = 11;

    int result = insert_mid_link(newnode,&head,6);

    if(result == INSERT_SUCCESS)

    {

        display_link(head);

    }

    if(result == INSERT_FAIL)

    {

        printf("fail\n");

    }

    if(result == EMPTY)

    {

        printf("empty\n");

    }

   

     return 0;

}

 

5. #include<stdio.h>

 

enum RESULT

{

    INSERT_EMPTY,

    DELETE_SUCCESS,

    DELETE_FAIL

};

 

struct node

{

    int num;

    struct node *next;

};

 

typedef struct node Node;

typedef Node * link;

 

void creat_link(link *head)

{

    *head = NULL;

}

 

void insert_link(link newnode,link *head)

{

    if(*head == NULL)

    {

        newnode->next = NULL;

        *head = newnode;

    }

    else

    {

        newnode->next = *head;

        *head = newnode;

    }

}

 

int delete(link *head,int num)

{

    if(*head == NULL)

    {

        return INSERT_EMPTY;

    }

   

    link temp = *head;

    if((*head)->num == num)

    {

        *head = (*head)->next;

        free(temp);

        temp = NULL;

        return DELETE_SUCCESS;

    }

    else

    {

        link p = temp;

        temp = temp->next;

       

        while(temp != NULL)

        {

            if(temp->num == num)

            {

                p->next = temp->next;

                free(temp);

                temp = NULL;

                return DELETE_SUCCESS;

            }

            p = temp;

            temp = temp->next;

        }

        return DELETE_FAIL;

    }

}

 

void display(link head)

{

    link temp = head;

    while(temp != NULL)

    {

        printf("%d\n",temp->num);

        temp = temp->next;

    }

}

 

int main()

{

    int i;

    link head;

    creat_link(&head);

   

    link newnode;

    for(i = 0;i < 10;i++)

    {

        newnode = (link)malloc(sizeof(Node));

        newnode->num = i + 1;

        insert_link(newnode,&head);

    }

    display(head);

   int result = delete(&head,12);

    if(result == INSERT_EMPTY)

    {

        printf("empty!\n");

    }

    if(result == DELETE_SUCCESS)

    {

        display(head);

    }

    if(result == DELETE_FAIL)

    {

        printf("fail!\n");

    }

    return 0;

}

6. #include<stdio.h>

 

enum RESULT

{

    REVERSE_SUCCESS,

    REVERSE_FAIL

};

 

struct node

{

    int num;

    struct node *next;

};

 

typedef struct node Node;

typedef Node * link;

 

void creat_link(link *head)

{

    *head = NULL;

}

 

void insert_link(link newnode,link *head)

{

    if(*head == NULL)

    {

        newnode->next = NULL;

        *head = newnode;

    }

    else

    {

        newnode->next = *head;

        *head = newnode;

    }

}

/*

int delete(link *head,int num)

{

    if(*head == NULL)

    {

        return INSERT_EMPTY;

    }

   

    link temp = *head;

    if((*head)->num == num)

    {

        *head = (*head)->next;

        free(temp);

        temp = NULL;

        return DELETE_SUCCESS;

    }

    else

    {

        link p = temp;

        temp = temp->next;

       

        while(temp != NULL)

        {

            if(temp->num == num)

            {

                p->next = temp->next;

                free(temp);

                temp = NULL;

                return DELETE_SUCCESS;

            }

            p = temp;

            temp = temp->next;

        }

        return DELETE_FAIL;

    }

}

*/

int reverse_link(link *head)

{

    if(*head == NULL || (*head)->next == NULL)

    {

        return REVERSE_FAIL;

    }

 

    link p = *head;

    link s = p->next;

    link t = s->next;

    while(t != NULL)

    {

        s->next  = p;

       

        p = s;

        s = t;

        t = t->next;

    }

    s->next = p;

    (*head)->next = NULL;

    *head = s;

 

    return REVERSE_SUCCESS;

}

 

 

void display(link head)

{

    link temp = head;

    while(temp != NULL)

    {

        printf("%d\n",temp->num);

        temp = temp->next;

    }

}

 

int main()

{

    int i;

    link head;

    creat_link(&head);

   

    link newnode;

    for(i = 0;i < 10;i++)

    {

        newnode = (link)malloc(sizeof(Node));

        newnode->num = i + 1;

        insert_link(newnode,&head);

    }

    display(head);

  //int result = delete(&head,12);

    int result = reverse_link(&head);

    if(result == REVERSE_SUCCESS)

    {

        display(head);

    }

    if(result == REVERSE_FAIL)

    {

        printf("fail!\n");

    }

    return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值