//對順序表的操作
#include<stdio.h>
#include <stdlib.h>
#include<malloc.h>
#define MAXSIZE 1000
typedef char ElemType;
typedef struct
{
ElemType data[MAXSIZE];
int length;
}SqList;
//初始化線性表
void InitList(SqList*&L)
L=(SqList*)malloc(sizeof(SqList));
L->length=0;
}
//銷毀線性表
void DestoryList(SqList*&L)
free(L);
//判斷線性表是否為空
int ListEmpty(SqList*L)
return(L->length==0);
//插入資料元素,起始位置為1
int ListInsert(SqList*&L,int Position,ElemType item)
int j;
if(Position<1||Position>L->length+1)
{
printf("元素插入失敗,請檢查輸入的位置是否有錯!\n");
return 0;
}
Position--;
for(j=L->length;j>Position;j--)
L->data[j]=L->data[j-1];
L->data[Position]=item;
L->length++;
printf("元素插入成功\n");
return 1;
//替換第Position個元素的值
int ListReplace(SqList*&L,int Position,ElemType item)
if(Position<1||Position>L->length)
printf("元素位序号錯誤! \n");
printf("元素存放成功!\n");
//删除資料元素
int ListDelete(SqList*&L,int Position,ElemType &item)
printf("輸入的位号有誤!\n");
Position --;
item=L->data[Position];
for(j=Position;j<L->length-1;j++)
{L->data[j]=L->data[j+1];}
L->length--;
//輸出線性表
void DispList(SqList *L)
int i;
if(ListEmpty(L))
printf("表空!\n");
return;
for(i=0;i<L->length;i++)
printf("%c ",L->data[i]);
printf("\n");
//求線性表中某個資料元素值
int GetElem(SqList*L,int Position,ElemType&item)
{return 0;}
item=L->data[Position-1];
//求線性表的長度
int ListLength (SqList*L)
return(L->length);
//按元素值查找
int LocateElem(SqList*L,ElemType item)
int i=0;
while(i<L->length&&L->data[i]!=item)i++;
if(i>=L->length)
else
return i+1;
void clear()
system("pause");
system("cls");
void showmenu()
printf("\n\n\n");
printf(" --線性表的基本運算-- \n");
printf("********************************************\n");
printf("* 1---插入一個新元素到第i個位置 *\n");
printf("* 2---删除第i個位置的元素 *\n");
printf("* 3---存一個新元素到第i個位置 *\n");
printf("* 4---顯示順序表中所有元素的值 *\n");
printf("* 5---檢索表中第i個元素 *\n");
printf("* 6---求表的長度 *\n");
printf("* *\n");
printf("* 0---退出 *\n");
printf("********************************************");
printf("\n請選擇菜單号(0--6):");
void Charu()
SqList*L;
InitList(L);//建立一個順序表
char choice='N';
ElemType item;
int Position;
printf("請輸入一個新元素的值:");
flushall();
scanf("%c",&item);
printf("請輸入插入的位置:");
scanf("%d",&Position);
ListInsert(L,Position,item);
void Shanchu()
printf("請輸入要删除的元素的位置序号:");
if(ListDelete(L,Position,item))
printf("删除的元素為%c\n",item);
void Xiugai()
printf("請輸入該元素的存放位置:");
ListReplace(L,Position,item);
void Jiansuo()
printf("請輸入元素的位序号:");
if(GetElem(L,Position,item))
printf("第%d個元素為:%c\n",Position,item);
printf("輸入的位序号有誤!\n");
void LineOP()
while(choice!='0')
showmenu();
flushall();
scanf("%c",&choice);
switch(choice)
{
case'1':
Charu();
clear();
break;
case'2':
Shanchu();
case'3':
Xiugai();
case'4':
DispList(L);
case'5':
Jiansuo();
case'6':
printf("線性表的長度為%d",ListLength(L));
case'0':
printf("\n\t程式結束!\n");
DestoryList(L);
default:
printf("\n\t選擇錯誤,請重新輸入!\n");
}
int main()
LineOP();
return 0;
本文轉自蓬萊仙羽51CTO部落格,原文連結:http://blog.51cto.com/dingxiaowei/1366812,如需轉載請自行聯系原作者