作业要求:
- 复习前面知识点(指针、结构体、函数)
- 整理思维导图
- 顺序表(按位置插入、按位置删除和去重、重新写)
- 理解链表的代码,尝试写一下链表的尾插和输出
1.复习前面知识点(指针、结构体、函数)
2.整理思维导图
3.顺序表(按位置插入、按位置删除和去重、重新写)
运行代码:
#include "seq_list.h"
seq_p creat_seq_link()
{
seq_p L=(seq_p)malloc(sizeof(seq_link));
if(NULL==L){
printf("申请失败\n");
return -1;
}
bzero(L->data,sizeof(L->data));
L->len=0;
return L;
}
void insert_head(seq_p L,datatype data)
{
if(NULL==L){
printf("入参失败请检查\n");
return;
}
if(MAX==L->len){
printf("数组已满\n");
return;
}
for(int i=L->len-1;i>=0;i--){
L->data[i+1]=L->data[i];
}
L->data[0]=data;
L->len++;
}
#if 1
void insert_pos(seq_p L,int pos,datatype data)
{
if(NULL==L){
printf("入参失败请检查\n");
return;
}
if(MAX==L->len){
printf("数组已满\n");
return;
}
for(int i=L->len-1;i>=pos;i--){
L->data[i+1]=L->data[i];
}
L->data[pos]=data;
L->len++;
}
void del_pos(seq_p L,int pos)
{
if(NULL==L){
printf("入参失败请检查\n");
return;
}
if(0==L->len){
printf("数组已空\n");
return;
}
for(int i=pos;i<L->len-1;i++){
L->data[i]=L->data[i+1];
}
L->data[L->len-1]=0;
L->len--;
}
void signal(seq_p L)
{
if(NULL==L){
printf("入参失败请检查\n");
return;
}
if(0==L->len){
printf("数组已空\n");
return;
}
for(int i=0;i<L->len-1;i++){
for(int j=i+1;j<L->len;j++){
if(L->data[i]==L->data[j]){
del_pos(L,j);
j--;
}
}
}
}
void print(seq_p L)
{
for(int i=0;i<L->len;i++){
printf("%d ",L->data[i]);
}
putchar(10);
}
运行截图:
4. 理解链表的代码,尝试写一下链表的尾插和输出
运行代码:
//尾插函数
void insert_tail(link_p H,datatype data)
{
if(NULL==H){
printf("入参失败重新申请\n");
return;
}
link_p new = creat_node(data);
link_p temp = H;
for(int i=0;i<H->len;i++){
temp=temp->next;
}
new->next=temp->next;
temp->next=new;
H->len++;
}
//输出函数
void print(link_p H)
{
int i;
if(H==NULL){
printf("入参失败,请检查\n");
return;
}
link_p temp=H->next;
for(i=0;i<H->len;i++){
printf("%d ",temp->data);
temp=temp->next;
}
putchar(10);
}
运行截图: