1.1
#include<stdio.h>
#include<stdlib.h>
#include"stdafx.h"
#define MAXNUM 20
#define true 1
#define false 0
typedef struct
{
int data[MAXNUM];
int length;
}list_type;
/*create a list:input data fromkeyboard,end by -1*/
void createlist(list_type *lp)
{
int i, elem;
lp->length = 0;
printf("\nplease input datas of the list\n");
for (i = 0; i< MAXNUM; i++)
{
scanf_s(" %d", &elem);
if (elem == -1) break;
lp->data[i] = elem;
lp->length++;
}
}
void showlist(list_type *lp)
{
int i;
printf("\nThese %d records are:\n", lp->length);
if (lp->length <= 0)
{
printf("No data!\n");
return;
}
for (i = 0; i<lp->length; i++)
printf(" %d ", lp->data[i]);
printf("\nlength of the list is:%d", lp->length);
}
int insertlist(list_type *lp, int new_elem, int i)
{
int j;
if (lp->length >= MAXNUM)
{
printf("the list is full,can not insert.");
return(false);
}
if (i<1 || i>lp->length + 1)
{
printf("\n%d is invalid value", i);
return(false);
}
for (j = lp->length; j >=i - 1; j--)
{
lp->data[j] = lp->data[j - 1];
}
lp->data[i - 1] = new_elem; //放入新元素;
lp->length++; //表长度增加;
return(true);
}
int deletelist(list_type *lp, int i)
{
int j;
if (i<1 || i>lp->length)
{
printf("elem not exist");
return(false);
}
for (j = i; j < lp->length; j++)
{
lp->data[j - 1] = lp->data[j];
}
lp->length--; //表长度减少;
return(true);
}
list_type delete_negative(list_type *lp)
{
int i;
int j = lp->length;
while (j>0)
{
if (lp->data[j] < 0)
{
for (i = j; i <lp->length; i++)
{
lp->data[i] = lp->data[i + 1];
}
lp->length--;
}
j--;
}
return *lp;
}
void main()
{
list_type list;
int i, new_elem;
createlist(&list);
showlist(&list);
printf("\ninsert:Enter data and i :\n");
scanf_s("%d%d", &new_elem,&i);
insertlist(&list,new_elem, i);
printf("\nlist after insert:\n");
showlist(&list);
printf("\ndelete:Enter i:\n");
scanf_s("%d", &i);
deletelist(&list,i);
printf("\nlist after delete:\n");
showlist(&list);
delete_negative(&list);
printf("\nlist after delete all negative:\n");
showlist(&list);
}
1.2
#include<stdio.h>
#include<stdlib.h>
#include"stdafx.h"
#define true 1
#define false 0
#define MAXNUM 50
typedef struct
{
int data[MAXNUM];
int length;
}list_type;
list_type create_list(list_type *lp)
{
int i;
int elenum;
int m;
lp->length = 0;
printf("请输入n个数\n");
printf("n:");
scanf_s("%d", &elenum);
printf("请依次输入");
for (i = 0; i<elenum; i++)
{
scanf_s("%d", &m);
lp->data[i] = m;
lp->length++;
}
return *lp;
}
list_type insertlist(list_type *lp, int x)
{
int m=lp->length;
int i=lp->length;
int j;
while(m>0)
{
if (lp->data[m] > x)
{
i--;
}
m--;
}
for(j=lp->length;j>i;j--)
{
lp->data[j] = lp->data[j - 1];
}
lp->data[j] = x;
lp->length++;
return *lp;
}
list_type delete_negative(list_type *lp)
{
int i;
int m;
int a = 0;
for (i = 0; i < lp->length; i++)
{
if (lp->data[i] < 0)
a++;
}
for (m = 0; m<i-a;m++)
{
lp->data[m] = lp->data[m + a];
}
for (i = 0; i < a;i++)
{
lp->length--;
}
return *lp;
}
void showlist(list_type *lp)
{
int i;
printf("\nThese %d records are:\n", lp->length);
if (lp->length <= 0)
{
printf("No data!\n");
return;
}
for (i = 0; i<lp->length; i++)
printf(" %d ", lp->data[i]);
printf("\nlength of the list is:%d", lp->length);
}
int main()
{
int x;
list_type list;
list=create_list(&list);
printf("建立的顺序表如下");
showlist(&list);
printf("\n输入的x的值:");
scanf_s("%d", &x);
insertlist(&list,x);
printf("新增元素的顺序表如下");
showlist(&list);
delete_negative(&list);
printf("删去负数的顺序表如下");
showlist(&list);
}