用C语言建立链表并进行基础操作

来源:互联网 发布:犀牛软件版本分析 编辑:程序博客网 时间:2024/06/05 18:56

//数据结构课的作业,就作为我的处女作吧,哈哈




#include<stdio.h>

#include<stdlib.h>

#include<malloc.h>

#defineMAXSIZE 100

#defineLISINCREMENT 10

typedefstructSq

{

         int *elem;//基地址

         int length;//顺序表中元素个数

         int size;//顺序表的长度

}SqList;

//创建顺序表

SqList* CreatSqList(SqList *L)

{

         if (!(L->elem = (int*)malloc(MAXSIZE * sizeof(int))))

         {

                   printf("内存分配错误\n");

                   exit(0);

         }

         L->length = 0;

         L->size =MAXSIZE;

         returnL;

}

//增加

SqList * ListInsert(SqList *L,inti,inte)//i为插入位置,e为插入值

{

         if ((i<0) || (i>L->length))

         {

                   printf("插入位置不正确\n");

                   return 0;

         }

         //插入数据

         int a;

         for (a =L->length; a > i; a--)

                   L->elem[a] =L->elem[a - 1];

         L->elem[i] =e;

         L->length++;

         returnL;

}

//删除

SqList* ListDelete(SqList *L,inti)

{

         if (i < 0 ||i >= L->length)

         {

                   printf("删除位置不正确\n");

                   //return 0;

         }

         //删除数据

         for (int a =i-1; a < L->length; a++)

                   L->elem[a] =L->elem[a + 1];

         L->length--;

         returnL;

}

//排序

SqList* ShengXu(SqList *L)

{

         int t;

         for (int i = 0; i<L->length; i++)

                   for (int j = i + 1; j<L->length; j++)

                            if (L->elem[i]>L->elem[j])

                            {

                                     t = L->elem[j];

                                     L->elem[j] = L->elem[i];

                                     L->elem[i] = t;

                            }

         returnL;

}

 

int main()

{

         int i, j, e;

         SqList *L = (SqList*)malloc(sizeof(SqList));

         L = CreatSqList(L);

         printf("请输入顺序表的长度\n");

         scanf("%d", &L->length);

         printf("请输入顺序表各元素\n");

         for (i = 0; i < L->length; ++i)

                   scanf("%d", &L->elem[i]);

         printf("输入的顺序表是\n");

         for (i = 0; i < L->length; ++i)

                   printf("%d\t", L->elem[i]);

         printf("\n");

         printf("请输入要插入的位置以及数值\n");

         scanf("%d,%d", &i, &e);

         L = ListInsert(L, i-1, e);

         printf("插入后表的顺序为\n");

         for (i = 0; i < L->length; i++)

                   printf("%d\t", L->elem[i]);

         printf("\n");

         printf("请输入要删除的位置\n");

         scanf("%d", &i);

         L = ListDelete(L, i);

         printf("删除后表的顺序为\n");

         for (i = 0; i < L->length; i++)

                   printf("%d\t", L->elem[i]);

         printf("\n");

         printf("升序排列后顺序为\n");

         L = ShengXu(L);

         for (i = 0; i < L->length; ++i)

                   printf("%d\t", L->elem[i]);

         printf("\n");

         system("pause");

         return 0;

}