作业要求:

  1. 复习前面知识点(指针、结构体、函数)
  2. 整理思维导图
  3. 顺序表(按位置插入、按位置删除和去重、重新写)
  4. 理解链表的代码,尝试写一下链表的尾插和输出

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 1void 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;ilen-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;ilen-1;i++){for(int j=i+1;jlen;j++){if(L->data[i]==L->data[j]){del_pos(L,j);j--;}}}}void print(seq_p L){for(int i=0;ilen;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;ilen;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;ilen;i++){printf("%d ",temp->data);temp=temp->next;}putchar(10);}
运行截图: