欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据结构---线性表的顺序存储结构

程序员文章站 2022-06-01 20:24:09
...
#include <stdio.h>

#define TRUE     1
#define FALSE    0
#define MAXSIZE  19

typedef struct
{
	int data[MAXSIZE];
	int length;
}linklist;

linklist link_list;

int linkInsert(int i, int data)
{
	int k;
	
	if(link_list.length == MAXSIZE)
	{
		return FALSE;
	}

	if(i < 1 || i > link_list.length + 1)
	{
		return FALSE;
	}

	if(i <= link_list.length)
	{
		for(k = link_list.length - 1; k >= i - 1; k--)
		{
			link_list.data[k+1] = link_list.data[k];
		}
	}
	link_list.data[i-1] = data;
	link_list.length++;
	
	return TRUE;
}

int linkDelete(int i)
{
	int k;
	
	if(link_list.length == 0)
	{
		return FALSE;
	}

	if(i < 1 || i > link_list.length)
	{
		return FALSE;
	}

	if(i < link_list.length)
	{
		for(k = i - 1; k < link_list.length - 1; k++)
		{
			link_list.data[k] = link_list.data[k+1];
		}
	}
	
	link_list.length--;

	return TRUE;
}

int linkPrintf()
{
	int i;

	for(i = 0; i < link_list.length; i++)
	{
		printf("data[%d] = %d num = %d\n", i, link_list.data[i], link_list.length);
	}

	return TRUE;
}

int main(int argc, char* argv[])
{
	int m, n, k;
	while(1)
	{
		printf("please input i and data\n");
		scanf("%d%d", &m, &n);
		linkInsert( m, n);
		linkPrintf();
		printf("is delete data?y/n\n");
		scanf("%d", &k);
		if(k)
		{
			linkDelete(k);
			linkPrintf();
		}
	}
	return 0;
}

(未完待编辑)