您的位置:首页 > 其它

苏嵌学习日志7月24日

2018-07-24 20:52 134 查看

学习日志             姓名:石圆圆        日期:2018年7月24日

 

 

今日学习任务

嵌入式C语言开发实战

今日任务完成情况

基本完成任务。

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

枚举,数据结构等‘}’后要记得加‘;’

今日未解决问题

今日开发收获

  1. 链表(属于数据结构)可分为单链表、单项循环链表、双向链表、双向循环链表;
  2. 数据结构的作用:用来管理数据(存、取、遍历、查找);
  3. 链表作用:解决数组带来的空间利用的问题;数组静态分配空间,容易造成浪费;链表动态分配空间,弥补了不足。
  4. 写一个链表的步骤:①定义节点类型;

②定义头指针;

③初始化指针;

④插入新节点。

自我评价

还需要课后巩固练习,增强记忆。

其他

 

 

[code]#include <stdio.h>
#include <stdlib.h>

enum RESULT
{
NO =  -1,
SUCCESE,
FAIL,
DELATE_SUCCESE,
DELATE_FAIL,
RESERVE_SUCCESE,
RESERVE_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)
{
if(newnode != NULL)
{
newnode->next = *head;
*head = newnode;
}
else
{
newnode->next == NULL;
*head = newnode;
}
}

int insert_mid_node(Link newnode,Link *head,int num)
{
if(*head == NULL)
{
return NO;
}

Link temp = *head;
while(temp != NULL)
{
if(temp->num == num)
{
newnode->next = temp->next;
temp->next = newnode;
return SUCCESE;
}
temp = temp->next;
}
return FAIL;
}

void insert_tail_node(Link newnode,Link *head)
{
if(*head == NULL)
{
newnode->next = NULL;
*head = newnode;
}
else
{
Link temp = *head;
while(temp->next != NULL)
{
temp = temp->next;
}
temp->next = newnode;
newnode->next = NULL;
}
}

int delate_node(Link *head,int num)
{
if(*head == NULL)
{
return NO;
}

Link temp = *head;

if((*head)->num == num)
{
(*head) = (*head)->next;
free(temp);
temp = NULL;
return DELATE_SUCCESE;
}
else
{
Link p = temp;
temp = temp->next;

while(temp != NULL)
{
if(temp->num == num)
{
p->next = temp->next;
free(temp);
temp = NULL;
return DELATE_SUCCESE;
}
p = temp;
temp = temp->next;
}
}
return DELATE_FAIL;
}

int reserve_link(Link *head)
{
if(*head == NULL||(*head)->next == NULL)
{
return RESERVE_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 RESERVE_SUCCESE;
}

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_mid_node(newnode,&head,6);
insert_tail_node(newnode,&head);
}

display_link(&head);

delate_node(&head,3);

reserve_link(&head);
/*
newnode = (Link)malloc(sizeof(Node));
newnode->num = 11;

insert_mid_node(newnode,&head,5);
*/
display_link(&head);

return 0;
}

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: