#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
/*
--------------------------
VER || 1.1
DATA || 3/11/2017
AUTHER || WUD
--------------------------
*/
static int MAXSIZELINE;
//static int deldata[100];
//static int delflag;
typedef int Status;
typedef int Elemtype;
typedef struct
{
Elemtype *elem;
int len;
int MAXSIZE;
} Line;
void ShowProgram()
{
//HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
//SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_WHITE);
int j;
for(j=0; j<27; j++){
printf("-");
Sleep(1);}
printf("\n");
printf("VER || 1.1\n");
printf("FINIDATA || 3/11/2017\n");
printf("AUTHER || WUD\n");
for(j=0; j<27; j++){
printf("-");
Sleep(1);
}
printf("\n");
Sleep(200);
}
Status InitLine(Line *L){
//int MAXSIZELINE;
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_GREEN);
printf("Hello, Please input The Size of Line: ");
scanf("%d",&MAXSIZELINE);
(*L).elem = (Elemtype *)malloc(MAXSIZELINE*sizeof(Elemtype));
if ((*L).elem==0){
printf("InitLine ERROR, Check your original code about malloc :( n");
exit(0);}
else if ((*L).elem != 0){
Sleep(100);
printf("InitLine Successfully :)\n");
Sleep(30);
printf("The space of Line is %d :)\n\n", MAXSIZELINE);
(*L).len = 0 ;
(*L).MAXSIZE = MAXSIZELINE ;}
return 0 ;
}
void InsertLine(Line *L){
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_BLUE);
int temp;
FILE *fp=fopen("INSDATA_1.txt","a");
fprintf(fp,"INSERT DATA IS-->");
for((*L).len = 0; (*L).len < (*L).MAXSIZE; (*L).len++){
printf("Please input the %d number into the Line : ", (*L).len);
scanf("%d", &temp);
(*L).elem[(*L).len] = temp;
fprintf(fp,"%d ",temp);
//(*L).len+=1;
if ((*L).len == (*L).MAXSIZE){
printf("InsertLine Successfully :)\n");
printf("Check your Line.MAXSIZELINE?=MAXSIZE, Maybe You Need To Create Some New Space :)\n");}
}fprintf(fp,"\n");fclose(fp);
}
int DeleteData(Line *L){
int location;
int stmp;
//int i;
printf("Please Input The Location That You Want To Delete: ");
scanf("%d", &location);
//deldata[delflag] = (*L).elem[location];
//delflag +=1;
stmp = (*L).elem[location];
printf("%d\n",(*L).elem[location]);
for (location=location; location<(*L).len; location++){
(*L).elem[location] = (*L).elem[location+1];
}
(*L).len=(*L).len-1;
printf("DELETE SUCCESFULLY :)\n");
//printf("dick %d dick", stmp);
return stmp;
//deldate[delflag] = (*L).elem[location];
//printf("Now the size of line is %d\n\n\n",(*L).len);
}
int InsertDataAnalyse(Line *L){
int space;
scanf("%d", &space);
if((*L).len+space > (*L).MAXSIZE){
printf("ERROR INPUT Len > MAXSIZELINE, maybe you need to malloc some new space\n");
main();}
else {
printf("RELLOC SUCCESSFULLY!\n");
return space;
}
}
void InsertData(Line *L){
int location;
int data,stmp,space,j;
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
Sleep(30);
printf("Please Input The Location That You want to Insert: ");
scanf("%d", &location);
Sleep(30);
printf("The Location Is %d\n", location);
Sleep(30);
printf("Please Input The DATA You Want To Insert: ");
scanf("%d", &data);
printf("The Date is %d\n", data);
Sleep(30);
printf("Now You Need To Increase Some Space So Save Your Date, Please Input INCREAMENT SPACE:");
Sleep(30);
space = InsertDataAnalyse(&L);
(*L).elem = (Elemtype*)realloc((*L).elem,((*L).len+space)*sizeof(Elemtype));
Sleep(30);
printf("New Space is %d\n", MAXSIZELINE+space);
(*L).len = (*L).len+space;
Sleep(30);
printf("Save Data!\n");
for (j = 0; j<80; j++){
printf(".");
//Sleep(1);
}
printf("\n");
for(location=location; location<=(*L).MAXSIZE+1; location++){
stmp = (*L).elem[location];
(*L).elem[location] = data;
data = stmp;
}
(*L).elem[(*L).len+1] = (*L).elem[(*L).len];
for (j = 0; j<80; j++){
printf(">");
// Sleep(1);
}
printf("\n");
FILE *fp=fopen("INSDATA_2.txt","a");
fprintf(fp,"INSERT DATA IS-->");
for (j=0; j<(*L).len-1; j++){
printf("%d--->", (*L).elem[j]);
fprintf(fp,"%d ", (*L).elem[j]);
Sleep(30);
if(j == (*L).len-2){
printf("%d\n",(*L).elem[j+1]);
fprintf(fp,"%d\n",(*L).elem[j+1]);}
}fclose(fp);//if (j==(*L).len-1){printf("%d\n", L.elem[j]);}
for (j = 0; j<80; j++){
printf(">");
//Sleep(1);
}
printf("\n");
}
Status FreeLine(Line *L){
free((*L).elem);
//(*L).elem=NULL;
//(*L).len=0;
//(*L).MAXSIZE=0;
//printf("FreeLine SUCCESSFULLY :)\n");
//Sleep(30);
printf("Now the Line Size is %d\n\n", (*L).elem);
//printf("Now the Line Size is %d\n\n", (*L).elem);
return 1;
}
Status DisplayLine(Line L){
int flag = 0;
int i, j;
for (i=0; i<L.len; i++){
printf("The %d number in this Line is %d \n", i, L.elem[i]);
}
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
printf("\nDescribe Line \n");
for (j = 0; j<80; j++){
printf(">");
//Sleep(1);
}
printf("\n");
for (j = 0; j<L.len-1; j++){
printf("%d--->", L.elem[j]);
Sleep(30);
//printf("%d,%d",j,L.len);
if (j==L.len-2)printf("%d\n", L.elem[j+1]);
flag = 1;
}
for (j = 0; j<80; j++){
printf(">");
//Sleep(1);
}
printf("\n");
return flag;
}
int main(){
int point,i=0;
int deldata[10];
int delflag=0;
ShowProgram();
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
printf("Press 1 to continue else exit :) ");
while (scanf("%d",&point)!=EOF){
if (point!=1){
exit(0);}
else{
Line L;
InitLine(&L);
InsertLine(&L);
Sleep(200);
int flag = DisplayLine(L);
deldata[delflag] = DeleteData(&L);
//printf("\nwrwfasdf %d adDaddad\n",deldata[delflag]);
delflag+=1;
//int stmp = DeleteData(&L);
//printf("\n%d\n",stmp);
//printf("\n%d\n", deldata[delflag]);
DisplayLine(L);
InsertData(&L);
if (flag == 1)printf("\nProgram Run Successfully!\n");
else printf("ERROR PROGRAM! check your program!\n");
Sleep(30);
FreeLine(&L);
FILE *fp=fopen("DELDATA.txt","a");
fprintf(fp,"DELETE DATA IS ");
printf("DELETE DATA IS: ");
for(i=0 ; i<delflag; i++){
printf("%d-->", deldata[i]);
fprintf(fp,"%d ",deldata[i]);
}fprintf(fp,"\n");
fclose(fp);
printf("\nPress 1 To continue else Exit!");
}
}
return 0 ;
}
//system(pause);
接上次的线性表,做了些优化。