順序表的基本操作

頭文件
#ifndef SEQLINK_H_INCLUDED
#define SEQLINK_H_INCLUDED
typedef struct node
{
    int data;
    int len;
}seqLink;

void seqLinkInit(seqLink *L)//初始化順序表
{
    L->len = 0;
}

void createSeqLink(seqLink *L,int n)//建立順序表
{
    int i;
    printf("請輸入數據:\n");
    for(i = 0; i < n; i++)
    {
        scanf("%d",&L[i].data);
    }
    L->len = n;
}


void outPut(seqLink *L)//順序表輸出
{
    int i;
   // printf("L中的元素爲:\n");
    for(i = 0; i < L->len; i++)
    {
        printf("%d\t",L[i].data);
        if((i+1) % 4 == 0)
            printf("\n");
    }
    printf("\n");
}
int get(seqLink *L,int i)//取順序表的第i個元素
{
    return L[i].data;
}

void emptySeqLink(seqLink *L)//清空順序表
{
    L->len = 0;
}

void inverseOne(seqLink *L, seqLink *B)//順序表直接逆置
{
    int i;
    int length = L->len;
    for(i = 0; i < length; i++)
    {
        B[length - i - 1].data = L[i].data;
    }
    B->len = length;
}


void inverseTwo(seqLink *L)//順序表間接逆置
{
    int i;
    int temp;
    int length = L->len;
    for(i = 0; i < length / 2; i++)
    {
        temp = L[i].data;
        L[i].data = L[length - i -1].data;
        L[length - i -1].data = temp;
    }
}


#endif // SEQLINK_H_INCLUDED

主函數

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

int main()
{
    seqLink *LA, *LB;
    int n;
    printf("請輸入n:\n");
    scanf("%d",&n);
    LA = (seqLink *)malloc(n*sizeof(seqLink));
    seqLinkInit(LA);
    createSeqLink(LA,n);
    printf("逐個輸出元素爲:\n");
    outPut(LA);
    printf("間接逆置爲:\n");
    LB = (seqLink *)malloc(sizeof(seqLink));
    seqLinkInit(LB);
    inverseOne(LA,LB);
    outPut(LB);

    printf("\n直接逆置爲:\n");

    inverseTwo(LA);
    outPut(LA);

    emptySeqLink(LA);
    emptySeqLink(LB);


    return 0;
}


發佈了39 篇原創文章 · 獲贊 4 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章