顺序线性表是按顺序在一段地址连续的单元中存储数据的的一种数据存储结构;
/********************************************************
顺序线性表历程
包含流程是创建线性表,线性表数据插入,删除,查找。
*********************************************************/
#include<stdio.h>
#include<stdlib.h>
#define MAX_NUM 20
#define OK 0
#define ERROR 1
/*定义线性表数据结构*/
typedef struct
{
int date[MAX_NUM]; //数据总数
int length; //线性列表实际长度
}qList;
/*创建顺序线性表*/
int ListCreat(qList *Node,int n)
{
int k;
for(k=0;k<n;k++)
{
Node->date[k]=k+1;
Node->length++;
printf("Node->date[%d+1]=%d\n",k,Node->date[k]);
}
printf("%s done\n",__FUNCTION__);
return OK;
}
/*顺序线性表数据查找*/
int ListSreach(qList *Node,int n,int*tmpDate)
{
if(Node->length==0||n<1||n>Node->length)
{
return ERROR;
}
*tmpDate=Node->date[n-1];
printf("serch node value is %d\n",Node->date[n-1]);
printf("%s done\n",__FUNCTION__);
return OK;
}
/*顺序线性表数据插入*/
int ListInster(qList *Node,int n,int*tmpDate)
{
int k;
if(Node->length==MAX_NUM)
{
return ERROR;
}
if(n<1||n>Node->length+1)
{
return ERROR;
}
if(n<Node->length)
{
for (k=Node->length;k>n;k--)
{
Node->date[k+1]=Node->date[k];
}
}
Node->date[n-1]=*tmpDate;
Node->length++;
printf("%s done\n",__FUNCTION__);
return OK;
}
/*顺序线性表数据删除*/
int ListDelete(qList*Node,int n ,int *tmpDate)
{
if(Node->length==0)
{
return ERROR;
}
if(n<1||n>Node->length)
{
return ERROR;
}
* tmpDate=Node->date[n-1];
if(n<Node->length)
{
for(n;n<Node->length;n++)
Node->date[n-1]=Node->date[n];
}
Node->length--;
printf("%s done\n",__FUNCTION__);
return OK;
}
void result_show(int result,qList*Node)
{
int n;
if(result==OK)
{
for(n=0;n<Node->length;n++)
printf("Node->date[%d]=%d\n",n,Node->date[n]);
}
else
{
printf("ERRROR\n");
exit(1);
}
}
int main(int argc,char*argv[])
{
qList listNode[MAX_NUM];
int *tmpDate;
int result;
result=ListCreat(listNode,10);
result_show(result,listNode);
result=ListSreach(listNode,5,tmpDate);
result_show(result,listNode);
result=ListInster(listNode,6,tmpDate);
result_show(result,listNode);
result=ListDelete(listNode,7 ,tmpDate);
result_show(result,listNode);
return 0;
}