|
|
#2
寒风中的细雨2012-04-01 00:23
程序代码:#include <stdio.h> #include <stdlib.h> #define MAX_SIZE (1024)// typedef int T; typedef struct _list// { int size; int maxlist; T element[MAX_SIZE]; }list; /** * #brief 创建顺序表 * #param v_plist, * #return * 0 成功 * 非0 失败 */ int creat_list(list *v_plist) { if (NULL == v_plist) { //print error msg! return -1;//failed } v_plist->size = 0; v_plist->maxlist = MAX_SIZE; return 0; } /** * #brief 判断是否为空表 * #param v_list * #return * 0 是 * 非0 否 */ int is_empty(list v_list) { if (0 == v_list.size) { return 0; } return -1; } /** * #brief 判断表是否满 * #param v_list * #return * 0 是 * 非0 否 */ int is_full(list v_list) { if (v_list.maxlist == v_list.size) { return 0; } return -1; } /** * #brief 清空表 * #param v_plist * #return * 0 成功 * 非0 失败 */ int clear_list(list *v_plist) { if (NULL == v_plist) { //print error msg! return -1; } v_plist->size = 0; return 0; } /** * #brief 初始化表 * #param v_plist * #param v_num * #return * 0 成功 * 非0 失败 */ int init_list(list *v_plist, int v_num) { int i; if (NULL == v_plist || v_num >= MAX_SIZE) { //print error msg! return -1; } printf_s("输入元素值,构建顺序表:\n"); for (i=0; i<v_num; ++i) { scanf_s("%d", &(v_plist->element[i])); ++(v_plist->size); } return 0; } /** * #brief 输出表信息 * #param v_list * #return * 0 成功 * 非0 失败 */ int print_list(list v_list) { int i; if (0 == v_list.size) { //print waring! return -1; } for (i=0; i<v_list.size; ++i) { printf ("%d\n", v_list.element[i]); } return 0; } /** * #brief 查询表信息 * #param v_list * #param v_x * #return * 0 成功 * 非0 失败 */ int search_list(list v_list, T v_x) { int i; for (i=0; i<v_list.size; ++i) { if (v_list.element[i] == v_x) { return 0; } } return -1; } /** * #brief 查询表信息 * #param v_plist * #param v_pos * #param v_x * #return * 0 成功 * 非0 失败 */ int insert_list(list *v_plist, int v_pos, T v_x) { int i; if (0 == is_full(*v_plist)) { //print waring msg! return -1; } if (v_pos<0 || v_pos>=v_plist->size) { //print error msg! return -1; } for (i=v_plist->size; i>v_pos; --i) { v_plist->element[i] = v_plist->element[i-1]; } v_plist->element[v_pos] = v_x; ++(v_plist->size); return 0; } /** * #brief 删除表信息 * #param v_plist * #param v_pos * #param v_x * #return * 0 成功 * 非0 失败 */ int delete_list(list *v_plist, int v_pos, T *v_x) { int i; if (0 == is_empty(*v_plist)) { //print waring msg! return -1; } if (v_pos<0 || v_pos>=v_plist->size) { //print error msg! return -1; } *v_x = v_plist->element[v_pos]; for (i=v_pos; i<v_plist->size; ++i) { v_plist->element[i] = v_plist->element[i+1]; } --(v_plist->size); return 0; } /** * #brief 操作 * #param v_plist * #param v_code * #return * 0 成功 * 非0 失败 */ int operator_list(list *v_plist, int v_code) { int n; int x; switch (v_code) { case 0:{ return 0;} case 1:{ printf_s("请输入顺序元素的个数:"); scanf_s("%d",&n); if (0 != init_list(v_plist, n)) { //print error msg! return -1; } return 0;} case 2:{ printf_s("\t打印顺序表信息!\n"); print_list(*v_plist); return 0;} case 3:{ printf_s("请输入要查找的元素值:"); scanf_s("%d",&n); if (0 == search_list(*v_plist, n)) { printf_s("\t查找成功\n"); } else { printf_s("\t没找到\n"); return -1; } return 0;} case 4:{ printf_s("输入要插入元素的位置及他的值:"); fflush(stdin); scanf_s("%d,%d", &n, &x); if (0 == insert_list(v_plist, n, x)) { printf_s("\t元素插入成功!\n"); return 0; } else { return -1; }} case 5:{ printf("输入要删除元素的位置:"); scanf_s("%d", &n); if (0 == delete_list(v_plist, n, &x)) { printf_s("\t元素删除成功!\n"); return 0; } else { return -1; }} } return -1; } int main(void) { list l; int m; creat_list(&l); while (1) { printf_s("请选择 0 -- 5:\n"); printf_s("1、初始化表\n2、打印表\n3、查找元素\n4、插入元素\n5、删除元素\n"); scanf_s("%d", &m); fflush(stdin); operator_list(&l, m); } return 0; } |
#include<stdlib.h>
#include<stdio.h>
#define maxsize 1024
typedef int T
typedef struct List 结构类型
{ int size,maxlist;
T element[maxsize];
}list;
void creatlist(list *1st,int maxsize) 初始化
{ 1st->size=0;
1st->maxlist=maxsize;
}
bool isempty(list 1st)
{ return 1st.size==0;
}
bool isfull(list 1st)
{ return 1st.size==1st.maxlist;
}
void clear(list *1st)
{ 1st->size=0;
}
void initlist(list *1st) 新建
{ int i;
for (i=0;i<maxsize;1st->size++,i++)
scanf("%d",&(1st->element[i]));
}
bool output(list *1st) 输出
{ int i;
for (i=0;i<1st->size;i++)
printf("%d",1st->element[i]);
printf("\n");
}
bool locatelem(list *1st,T x) 查寻
{ int i;
for (i=0;i<=1st->size;i++)
if(1st->element[i]==x)
return i+1;
return 0;
}
bool insert(list *1st,int pos,T x) 插入
{ int i;
if(isfull(*1st))
{printf("overflow");return false;
}
if(pos<0||pos>1st->size)
{ printf("out of bounds");
return false;
}
for (i=1st->size-1;i>=pos;i--)
1st->element[i+1]=1st->element[i];
1st->element[pos]=x;
1st->size++;
return ture;
}
bool remove(list *1st,int pos, T*x) 删除
{ int i;
if(isempty(*1st))
{ printf("underflow");return false;
}
*x=1st->element[pos];
for(i=pos+1;i<1st->size;i++)
1st->element[i-1]=1st->element[i];
1st->size--;
return ture;
}
void main() 主函数
{
int n,i,k=1,m,x;
list l;
createlist(l);
while(k)
{ printf("请选择 0--5: ")
scanf("%d",&m);
getchar();
switch(m)
{
case 0:return;
case 1:{ printf("输入元素值,构建顺序表:\n");
printf("请输入顺序元素的个数: ");
scanf("%d",&n);
creatlist(l,n);
Output(l);
break;}
case 2:Output(l);printf("\n");break;
case 3:{ Printf("请输入要查找的元素值: ");
scanf("%d",&x);
k=locatelem(l,x);
Printf("要查找的元素的定位:%d\n",k);
printf("\n");
break;}
case 4:{ printf("输入要插入元素的位置及他的值:");
scanf("%d",&i);
scanf("%d",&x);
insert(l,x,i);
Output(l);
printf("\n");
break;}
case 5:{ printf("输入要删除元素的位置:");
scanf("%d",&i);
Output(l);
printf("\n");
break;}
printf("继续运行吗Y(1)/N(0): ");
scanf("%d",&k);
if(!k) return;
}
}
程序代码: