今日学习任务
|
|
今日任务完成情况
| 今日学习任务基本完成 1.掌握链表的分类:单链表、双链表、单向循环链表、双向循环链表 2.掌握单向链表(带表头,不带表头) 3.写一个链表的步骤:定义节点类型、定义头指针、初始化指针、插入新节点 |
今日开发中出现的问题汇总
| 对链表的头插、尾插等编程还不熟悉 |
今日未解决问题
| 无 |
今日开发收获 | 今天接着C语言的复习,重温了以前的链表知识点,相较于以前的,老师通过图形让我更深地了解了指针的定义,也懂得了很多的新知识,老师拿经典的面试题给我们做,也让我们了解了很多C语音的有趣点。 |
自我评价
| 今天学习任务基本按计划完成,对C语言的知识点又做到了巩固,同时发现以前所学的东西遗忘的很多。 |
其他
| 无 |
代码:
#include <stdio.h>
#include <stdlib.h>
enum RESULT
{
LINK_EMPTY = -1,
INSERT_SUCCESS,
INSERT_FAIL,
DELETE_SUCCESS,
DELETE_FAIL,
INVERT_SUCCESS,
INVERT_FAIL
};
struct node
{
int num;
struct node *next;
};
typedef struct node Node;
typedef Node *Link;
void creat_link(Link *head)
{
*head = NULL;
}
void insert_head_node(Link newnode,Link *head)
{
newnode->next = *head;
*head = newnode;
}
/*int insert_mid_node(Link newnode,Link *head,int num)
{
if(*head == NULL)
{
return LINK_EMPTY;
}
Link temp = *head;
while(temp != NULL)
{
if(temp->num == num)
{
newnode->next = temp->next;
temp->next = newnode;
return INSERT_SUCCESS;
}
temp = temp->next;
}
return INSERT_FAIL;
}*/
/*int delete_node(Link *head,int num)
{
if(*head == NULL)
{
return DELETE_FAIL;
}
Link temp = *head;
if((*head)->num == num)
{
*head = (*head)->num;
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 insert_tail_node(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;
}
}
int invert_node(Link *head)
{
Link p = *head;
Link s = p->next;
Link t = s->next;
if(*head == NULL || (*head)->next == NULL)
{
return INVERT_FAIL;
}
while(t != NULL)
{
s->next = p;
p = s;
s = t;
t = t->next;
}
s->next = p;
(*head)->next = NULL;
*head = s;
return INVERT_SUCCESS;
}
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_node(newnode,&head);
insert_tail_node(newnode,&head);
}
if(invert_node(&head) == INVERT_SUCCESS)
{
display_link(head);
}
/* if(delete_node(&head,7) == DELETE_SUCCESS)
{
display_link(head);
}*/
// display_link(head);
/*newnode = (Link)malloc(sizeof(Node));
newnode->num = 11;
if(insert_mid_node(newnode,&head,5) == INSERT_SUCCESS)
{
display_link(head);
}*/
else
{
printf("link is null or not find num!\n");
}
return 0;
}