c语言实现顺序表?

Python021

c语言实现顺序表?,第1张

--顺序表.h

#include<stdio.h>

#include<stdlib.h>

#include<malloc.h>

#define LIST_INIT_SIZE 100

#define LISTINCREMENT 10

#define TRUE 1

#define FLASE 0

typedef int Elemtype

typedef int Status

/*接口定义

Status InitList_Sq(SqList &L,int size,int inc)

void CreateList_Sq(SqList &L)

void print_Sq(SqList &L)

int Search_Sq(SqList L, Elemtype e)

Status DestroyList_Sq(SqList &L)

Status ClearList_Sq(SqList &L)

Status ListEmpty_Sq(SqList L)

int ListLength_Sq(SqList L)

Status GetElem_Sq(SqList L, int i, Elemtype &e)

Status PutElem_Sq(SqList &L, int i, Elemtype e)

Status Append_Sq(SqList &L, Elemtype e)

Status DeleteLast_Sq(SqList &L, Elemtype &e)

*/

--------------------

#include "顺序表.h"

//定义顺序表类型

typedef struct {

Elemtype *elem

int length

int listsize

int increment

}SqList

//初始化顺序表

Status InitList_Sq(SqList &L,int size,int inc) {

L.elem = (Elemtype *)malloc(size * sizeof(Elemtype))

L.length = 0

L.listsize = size

L.increment = inc

return TRUE

}

//创建顺序表

Status CreateList_Sq(SqList &L) {

int i

printf("请输入你要创建的顺序表元素个数:\n")

scanf_s("%d", &L.length)

if (L.length >= L.listsize) {

L.elem = (Elemtype *)realloc(L.elem, (L.listsize + L.increment) * sizeof(Elemtype))

}

if (!L.elem) {

return FLASE

}

printf("请输入你要创建的顺序表:\n")

for (i = 0i<L.lengthi++) {

scanf_s("%d", &L.elem[i])

}

}

//遍历顺序表

void print_Sq(SqList &L) {

int i

for (i = 0i<L.lengthi++) {

printf("%4d", L.elem[i])

}

}

//查找元素的位置

int Search_Sq(SqList L, Elemtype e) {

int i = 0

while (L.elem[i] != e&&i<L.length) {

i++

}

if (i>L.length)

return -1

else

return i + 1//因为C语言是从下标为0开始的,当i=0时表示第一个元素

}

//销毁顺序表

Status DestroyList_Sq(SqList &L) {

if (L.elem == NULL)

return -1

else

free(L.elem)

printf("\n销毁成功\n")

return TRUE

}

//清空顺序表

Status ClearList_Sq(SqList &L) {

if (L.elem == NULL)

exit(0)

int i

Elemtype *p_elem = L.elem

for (i = 0i<L.lengthi++) {

*L.elem = NULL

L.elem++

}

L.elem = p_elem

}

//判断顺序表是否为空

Status ListEmpty_Sq(SqList L) {

int i

Elemtype* p_elem = L.elem

for (i = 0i<L.lengthi++) {

if (*L.elem != 0) {

L.elem = p_elem

return FLASE

}

L.elem++

}

return TRUE

}

//求顺序表的长度

int ListLength_Sq(SqList L) {

return L.length

}

//用e返回顺序表L中第i个元素的值

Status GetElem_Sq(SqList L, int i, Elemtype &e) {

int j

Elemtype* p_elem = L.elem

if (i<1 || i>L.length)

return FLASE

for (j = 1j <= ij++)

L.elem++

e = *L.elem

L.elem = p_elem

return TRUE

}

//将顺序表L中第i个元素赋值为e

Status PutElem_Sq(SqList &L, int i, Elemtype e) {

L.elem[i - 1] = e

return TRUE

}

//在顺序表L表尾添加元素e

Status Append_Sq(SqList &L, Elemtype e) {

L.elem[L.length] = e

L.length++

L.listsize += L.increment

return TRUE

}

//删除顺序表L表尾元素

Status DeleteLast_Sq(SqList &L, Elemtype &e) {

e = L.elem[L.length - 1]

L.length--

return TRUE

}

********************************************主函数.c*************************************************

#include <stdio.h>

#include <stdlib.h>

#include "顺序表.h"

#include "源代码.h"

//--------------------主函数入口--------------------

int main(){

SqList L

int size, inc

int e

int a

int length

int i

int temp

int j=10

int ee

printf("\n--------------------顺序表初始化------------------\n")

printf("请输入顺序表的长度size以及扩容量:\n")

scanf_s("%d %d", &size, &inc)

InitList_Sq(L, size, inc)

CreateList_Sq(L)

printf("\n--------------------判断是否为空------------------\n")

if(ListEmpty_Sq(L)){

printf("该顺序表为空\n")

}

else

printf("该顺序表不为空\n")

printf("\n--------------------遍历顺序表--------------------\n")

printf("此时顺序表为:\n")

print_Sq(L)

printf("\n--------------------查找元素----------------------\n")

printf("\n请输入要查找的元素:\n")

scanf_s("%d",&e)

a = Search_Sq(L, e)

printf("%d为第%d位:\n",e,a)

printf("\n--------------------输出长度----------------------\n")

length = ListLength_Sq(L)

printf("顺序表的长度为%d\n",length)

printf("\n----------将顺序表L中第i个元素赋值为temp----------\n")

printf("请输入第i个元素的i值和temp值:\n")

scanf_s("%d %d",&i,&temp)

PutElem_Sq(L, i, temp)

printf("\n此时顺序表为:\n")

print_Sq(L)

printf("\n---------------在顺序表表尾添加元素---------------\n")

Append_Sq(L, j)

printf("\n此时顺序表为:\n")

print_Sq(L)

printf("\n---------------在顺序表表尾删除元素---------------\n")

DeleteLast_Sq(L, ee)

printf("\n被删除的元素为%d\n",ee)

printf("此时顺序表为:\n")

print_Sq(L)

printf("\n-------------------清空顺序表---------------------\n")

ClearList_Sq(L)

if(ListEmpty_Sq(L)){

printf("\n清空成功\n")

}

printf("\n------------------销毁顺序表----------------------\n")

DestroyList_Sq(L)

getchar()

getchar()

return 0

}

#include "stdio.h"

#include "string.h"

void display(char * grid[11][6]){

for (int i = 0i <11i++) {

for (int j = 0j <6j++) {

printf("%7s ",grid[i][j])

}

printf("\n")

}

}

int getY(char * yid)

void set(char * yid,int x,char* c)

char* grid[11][6]

void init(){

for (int i = 0i <11i++) {

for (int j = 0j <6j++) {

grid[i][j] = (char *)""

}

}

grid[0][1] = (char *)"A"

grid[0][2] = (char *)"B"

grid[0][3] = (char *)"C"

grid[0][4] = (char *)"D"

grid[0][5] = (char *)"E"

grid[1][0] = (char *)"1"

grid[2][0] = (char *)"2"

grid[3][0] = (char *)"3"

grid[4][0] = (char *)"4"

grid[5][0] = (char *)"5"

grid[6][0] = (char *)"6"

grid[7][0] = (char *)"7"

grid[8][0] = (char *)"8"

grid[9][0] = (char *)"9"

grid[10][0] = (char *)"10"

}

int main(){

init()

set("A",1,"Andy")

display(grid)

return0

}

void set(char * yid,int x,char* c){

int y = getY(yid)

grid[x][y] = c

}

int getY(char * h_id){

if (strcmp(h_id, "A") == 0) {

return1

}

elseif(strcmp(h_id, "B") == 0){

return2

}

elseif(strcmp(h_id, "C") == 0){

return3

}

elseif(strcmp(h_id, "D") == 0){

return4

}

elseif(strcmp(h_id, "E") == 0){

return5

}

elsereturn -1

}

1、首先在电脑中,打开软件Dev-C++进入操作页面中,然后在页面中输入头文件。

2、然后接下来编写Main主函数。

3、接着定义一个变量并赋予初值,这样就可以编写printf函数语句。

4、编写完成后,在页面中找到并点击编译、链接、运行按钮。

5、这时候,如下图所示,便可有看到效果了。