作业要求:
- 复习前面知识点(指针、结构体、函数)
- 整理思维导图
- 顺序表(按位置插入、按位置删除和去重、重新写)
- 理解链表的代码,尝试写一下链表的尾插和输出
- #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
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
len-1;i++){ - for(int j=i+1;j
len;j++){ - if(L->data[i]==L->data[j]){
- del_pos(L,j);
- j--;
- }
- }
- }
-
-
- }
-
- void print(seq_p L)
- {
- for(int i=0;i
len;i++){ - printf("%d ",L->data[i]);
- }
- putchar(10);
- }

- //尾插函数
- 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);
- }
