但行好事,莫问前程

顺序表

顺序表

/*
 *author:zylg 
 * fuction introduce
 * displayList* head)
 * insertList()
 * deleteList()
 * reverseList()
 * deleteSameList()
 *注意:检查上下的溢出
 *
*/
#include<stdlib.h>
#include <iostream>
#include<string>
#include<iomanip>
using namespace std;
typedef int datatype;
#define maxsize 1024
typedef struct
{
    datatype data[maxsize];
    int last;
}sequenlist;
void displayList(sequenlist *head)
{
    int i=0;
    while(i<=head->last)
    {
            cout<<i<<":"<<head->data[i]<<endl;
            ++i;
    }
}
void inserList(sequenlist *head,datatype data,int n)
{
    if(n<1 || head->last>=maxsize-1 || n>head->last+1)return;
    for(int i=head->last;i>=n-1;--i)
    {
        head->data[i+1]=head->data[i];
    }
    head->data[n-1]=data;
    head->last++;
}
void deleteList(sequenlist *head,int n)
{
    if(n>head->last+1 || n<1 || head->last<0) {cout<<"出现错误";return;}
    for(int i=n-1;i<=head->last;i++)
    {
        head->data[i]=head->data[i+1];
    }
    head->last--;
}
void reverseList(sequenlist *head)
{
    for(int i=0;i<head->last;i++)
    {
        datatype x=head->data[i];
        head->data[i]=head->data[head->last-i];
        head->data[head->last-i]=x;
        ++i;

    }
}
void deleteSameList(sequenlist *head)
{
    for(int i=0;i<head->last;i++)
    {
        for(int j=i+1;j<head->last;j++)
        {
            if(head->data[i]==head->data[j]){deleteList(head,j);j--;}
        }
    }
}

int main()
{
    sequenlist link;
    for(int i=0;i<10;i++)
    {
        link.data[i]=i+1;
        link.last=i;
    }
    inserList(&link,100,1);
    deleteList(&link,1);
    reverseList(&link);
    reverseList(&link);
    inserList(&link,1,9);
    deleteSameList(&link);
    displayList(&link);

    return 0;
}









#include<stdio.h>
#include<stdlib.h>
typedef int datatype;
#define maxsize 1024
typedef struct
{
	datatype data[maxsize];
	int last;
}sequenlist;
int INSERT(sequenlist *L, int x, int i)
{
	int j;
	if ((*L).last >= maxsize - 1) { printf("overflow\n"); }
	else
	{
		if (i<1 || i>(*L).last + 1) { printf("location is error\n"); }
		else
		{
			for (j = (*L).last;j >= i - 1;j--)
			{
				(*L).data[j + 1] = (*L).data[j];
			}
			(*L).data[i - 1] = x;
			(*L).last = (*L).last + 1;
		}
	}
	return 1;
}
int DELETE(sequenlist *L, int i)
{
	int j = 0;
	if ((*L).last < 0) { printf("This sequenlist is null!\n"); }
	else
	{
		if (i<1 || i>(*L).last + 1) { printf("Input error!\n"); }
		else
		{
			for (j = i - 1;j <= (*L).last;j++)
			{
				(*L).data[j] = (*L).data[j + 1];
			}
			(*L).last--;
		}
	}
	return 1;
}

void listprint(sequenlist *L) /*输出线性表*/
{
	int i;
	for (i = 0;i<(*L).last;i++)
		printf("i,e=%d,%d\n", i, L->data[i]);
}
int LOCATE(sequenlist *L, int x)
{
	int i, j;
	for (i = 0;i<maxsize - 1;i++)
	{
		j = i;
		if ((*L).data[i] == x) { return j + 1; }
	}
	return 0;
}
int DIVERSE(sequenlist* L)
{
	int i = 0, x;
	for (;i<(*L).last / 2;)
	{
		x = (*L).data[i];
		(*L).data[i] = (*L).data[(*L).last - 1 - i];
		(*L).data[(*L).last - 1 - i] = x;
		i++;
		x = (*L).data[i];
	}
	return 1;
}
int DELSAME(sequenlist* L)
{
	int i, j;
	if ((*L).last == 1)
	{
		printf("only have one data.\n");
	}
	else
	{
		for (i = 0;i<(*L).last -1;i++)
		{
			for (j =  i+1;j<(*L).last;j++)
			{
				if ((*L).data[i] == (*L).data[j]) { DELETE(L, j+1);j--;}
			}
		}
	}
	return 1;
}
void delsame(sequenlist *L)
{
	int j = 1;
	int i = 0;
	int len = 1;
	while (j<L->last)
	{
		for (i = 0;i<len;i++)
		{
			if (L->data[i] == L->data[j])
				break;
		}
		if (i == len)
			L->data[len++] = L->data[j++];
		else
			j++;
	}
	L->last = len;
}
void main()
{
	
	int f;
	int i = 0,j;
	sequenlist q ;
	system("color 0A");
	printf("please input nuber for sequencelist(0 to end):\n");
	for(i=0;i<maxsize;i++)
	{
	scanf("%d",&q.data[i]);
	q.last=i+1;
	if(q.data[i]==0){ DELETE(&q, i+1);break;}
	}
	
		
	while (1)
	{
	
		printf("please choose the number\n");
		printf("\t 1.add squenlist.\n");
		printf("\t 2.delete squenlist.\n");
		printf("\t 3.find the location.\n");
		printf("\t 4.diverse sequan.\n");
		printf("\t 5.del the same sequen.\n");
		printf("\t 6.browser sequen.\n");
		printf("\t 0.exit.\n");
		scanf("%d", &f);
		
		switch (f)
		{
		case 1: {printf("please input add number and locate.\n");scanf("%d %d", &i, &j);INSERT(&q, i, j);system("pause");break;}
		case 2: {printf("please input delete locate.\n");scanf("%d", &i);DELETE(&q, i);system("pause");break;}
		case 3: {printf("please input sequen for find.\n");scanf("%d", &i);	printf("location is:%d\n",LOCATE(&q, i));system("pause");break;}
		case 4: {printf("diverse sequan.\n");DIVERSE(&q);system("pause");break;}
		case 5: {printf("del the same sequen.\n");DELSAME(&q);system("pause");break;}
		case 6: {printf("browser sequen.\n");listprint(&q);system("pause");break;}
		}
		if (f == 0) { break; }
		system("cls");
	}

}
posted @ 2018-10-15 14:31  专业路过  阅读(96)  评论(0编辑  收藏  举报