用C语言实现顺序表的无重复顺序输出

前序:好久没有用C语言了,就是嫌弃C语言几乎所有的底层方法都要自己编码实现,对于业务逻辑的处理就不能更好的把控。但但是C语言确实对于提升编码能力是很有益的。今天应别人的要求,简单实现了一下,C的原生感很强,比java更能体现一个人的算法功底。

简单讲一下步骤:

(1)输入表长度
(2)初始化线性表
(3)将顺序表排序(排序方法自选:什么冒泡排序,直接选择排序,快序排序均可以…)
(4)删除重复元素(这个实现起来比较简单,比较过程只用O(n)时间,重构顺序表)
(5)直接output(注意输出格式即可)

附上源代码:

#include<stdio.h>
#include<stdlib.h>

typedef struct SqList{
        int* data;
        int length;
        };

bool InitList(struct SqList* L,int n)// 初始化list
{
       L->data=(int*)malloc(sizeof(int)*(n));
       int data=0;
       for(int i=0;i<n;i++)
       {
       	   scanf("%d",&data); 
           L->data[i]=data;
       }

       L->length= n;
       return true;
       }
void bubblesort(struct SqList* L)//冒泡排序算法 
{
	
	int data;
	int t;
	for(int i=1;i<L->length;i++)
	{
		for(int j=0;j<L->length-1;j++)
		{
			if(L->data[j]>L->data[j+1])
			{
				t=L->data[j+1];
				L->data[j+1]=L->data[j];
				L->data[j]=t;
			}
		}
	}
	 
}
void Delete_same(struct SqList* LL)//删除重复元素 
{
    int i=0;
    int j=1;
    for(i=0,j=1;j<LL->length;j++)
    {
        if(LL->data[j]!=LL->data[i])
         {
             i++;
             LL->data[i]=LL->data[j];
         }
    }
    LL->length=i+1;

}
 void output(struct SqList *L)//输出顺序表 
 {
     int j=L->length;
     int i=0;
     for(i=0;i<j;i++)
     {
         printf("%d ",L->data[i]);
     }
     printf("\n");
 }
 
int main()
{

    struct SqList L;
    
    int n;
    scanf("%d",&n);   //输入表长 

    if(InitList(&L,n)==true)
    {
    	bubblesort(&L);
    	Delete_same(&L);
        output(&L);
        printf("\n\n");
       //printf("顺序表初始化成功!\n"); 
       
    }else{
    	printf("顺序表初始化失败!\n");
	}
   
}

用C语言实现顺序表的无重复顺序输出