1.自己实现课上写的代码功能
2.实现链表的逆置
3.冒泡排序完成升序
//main.c
#include "linklist.h"
int main(int argc, const char *argv[])
{
link *p=link_create();
link_tailin(p,77);
link_tailin(p,35);
link_tailin(p,71);
link_tailin(p,36);
link_tailin(p,12);
link_show(p);
printf("在位置6插入数据:\n");
link_inpost(p,6,77);
link_show(p);
printf("在位置3插入数据:\n");
link_inpost(p,3,82);
link_show(p);
printf("从头删除数据:\n");
link_headdel(p);
link_headdel(p);
link_show(p);
printf("删除第3个位置的数据:\n");
link_delpost(p,3);
link_show(p);
printf("连接两个链表:\n");
link *p1=link_create();
link_tailin(p1,132);
link_tailin(p1,351);
link_tailin(p1,796);
link_connect(p,p1);
link_show(p);
printf("链表逆置后:\n");
link_turnover(p);
link_show(p);
printf("排序后:\n");
link_sort(p);
link_show(p);
return 0;
}
//linklist.h
#ifndef __LINKLIST_H__
#define __LINKLIST_H__
#include <stdio.h>
#include <stdlib.h>
typedef struct linklist
{
int data;
struct linklist *next;
}link;
//创建链表
link *link_create();
//插入数据(尾插)
link *link_tailin(link *p,int data);
//输出数据
link *link_show(link *p);
//按位置插入数据
link *link_inpost(link *p,int post,int data);
//删除数据(头删)
link *link_headdel(link *p);
//按位置删除数据
link *link_delpost(link *p,int post);
//连接两个链表
link *link_connect(link *p1,link *p2);
//链表逆置
link *link_turnover(link *p);
//冒泡排序--升
link *link_sort(link *p);
#endif
//linklist.c
#include "linklist.h"
//创建链表
link *link_create()
{
link *p=(link *)malloc(sizeof(link));
if(p==NULL)
{
printf("申请失败\n");
return NULL;
}
else
{
printf("申请成功\n");
}
p->data=0;
p->next=NULL;
return p;
}
//插入数据(尾插)
link *link_tailin(link *p,int data)
{
if(p==NULL)
{
return NULL;
}
link *temp=(link *)malloc(sizeof(link));
while(p->next!=NULL)
{
p=p->next;
}
temp->data=data;
temp->next=p->next;
p->next=temp;
return p;
}
//输出数据
link *link_show(link *p)
{
if(p==NULL)
{
return NULL;
}
p=p->next;
while(p!=NULL)
{
printf("%-5d",p->data);
p=p->next;
}
puts("");
return p;
}
//按位置插入数据
link *link_inpost(link *p,int post,int data)
{
if(p==NULL)
{
return NULL;
}
int count=0;
int flag=0;
link *temp=(link *)malloc(sizeof(link));
while(p!=NULL)
{
if((count+1)==post)
{
flag=1;
temp->data=data;
temp->next=p->next;
p->next=temp;
}
p=p->next;
count++;
}
if(flag==0)
{
printf("位置输入错误\n");
}
return p;
}
//删除数据(头删)
link *link_headdel(link *p)
{
if(p==NULL)
{
return NULL;
}
link *temp=p->next;
p->next=temp->next;
free(temp);
temp=NULL;
return p;
}
//按位置删除数据
link *link_delpost(link *p,int post)
{
if(p==NULL)
{
return NULL;
}
int count=0;
int flag=0;
while(p!=NULL)
{
if((count+1)==post)
{
flag=1;
link *temp=p->next;
p->next=temp->next;
free(temp);
temp=NULL;
}
p=p->next;
count++;
}
if(flag==0)
{
printf("位置输入错误\n");
}
return p;
}
//连接两个链表
link *link_connect(link *p1,link *p2)
{
if(p1==NULL || p2==NULL)
{
return NULL;
}
while(p1->next!=NULL)
{
p1=p1->next;
}
p1->next=p2->next;
return p1;
}
//链表逆置
link *link_turnover(link *p)
{
int arr[10];
int i=0;
link *temp=p;
while(p!=NULL)
{
arr[i]=p->data;
p=p->next;
i++;
}
while(temp!=NULL)
{
temp->data=arr[i];
temp=temp->next;
i--;
}
return p;
}
//冒泡排序--升
link *link_sort(link *p)
{
int arr[10];
int i=0;
link *temp=p;
p=p->next;
while(p!=NULL)
{
arr[i]=p->data;
printf("%-5d",arr[i]);
p=p->next;
i++;
}
puts("");
int count=i+1;
for(i=0;i<count-1;i++)
{
for(int j=0;j<count-1-i;j++)
{
if(arr[j]>arr[j+1])
{
arr[j]=arr[j]^arr[j+1];
arr[j+1]=arr[j]^arr[j+1];
arr[j]=arr[j]^arr[j+1];
}
}
}
i=0;
while(temp!=NULL)
{
temp->data=arr[i];
temp=temp->next;
i++;
}
return p;
}
4.自己抓紧时间复习,之前不会的内容
5.递归实现斐波那契数列,1,1,2,3,5,8,13,21,34,55,89,144……
#include <stdio.h>
int fibo(int n);
int main(int argc, const char *argv[])
{
int n=12;
for(int i=1;i<=n;i++)
{
printf("%-5d",fibo(i));
}
puts("");
return 0;
}
int fibo(int n)
{
if(n==1 || n==2)
{
return 1;
}
else
{
return fibo(n-2)+fibo(n-1);
}
}
6.完成Xmind思维导图

博客主要围绕信息技术相关实践展开,包括自己实现课上代码功能,对链表进行逆置操作,用冒泡排序实现升序排列,复习之前未掌握内容,递归实现斐波那契数列,还需完成Xmind思维导图。
6070

被折叠的 条评论
为什么被折叠?



