//数据结构C语言版(清华大学_唐国民_第3版)
//顺序表功能实现,书P17 例子2.2.3,与书上代码有些许出入,不用在意,重要的是思路
#include <stdio.h>
#include <stdlib.h>
#define Maxsize 1024
typedef char ElementType;
struct LNode {
ElementType Data[Maxsize];
int Last;
};
typedef struct LNode* List;
void Create(List Ptrl);
void Insert(List Ptrl,ElementType x,int i);
void Printout(List Ptrl);
void Delete(List Ptrl,int i);
int main()
{
char cmd, x;
int i;
List Ptrl;
Ptrl = (List)malloc(sizeof(struct LNode));
Ptrl->Last = -1;
Create(Ptrl);
Printout(Ptrl);
do
{
printf("i,I...插入\n");
printf("d,D...删除\n");
printf("q,Q...推出\n");
do
{
fflush(stdin);
scanf("%c", &cmd);
} while ((cmd != 'q') && (cmd != 'Q') && (cmd != 'd') && (cmd != 'D') && (cmd != 'i') && (cmd != 'I'));
switch (cmd)
{
case 'i':
case 'I':
printf("请输入你要插入的数据:");
fflush(stdin);
scanf("%c",&x);
printf("请输入你要插入的位置:");
scanf("%d", &i);
Insert(Ptrl, x, i);
Printout(Ptrl);
break;
case 'd':
case 'D':
printf("请输入你要删除的元素的位置:\n");
fflush(stdin);
scanf("%d", &i);
Delete(Ptrl, i);
Printout(Ptrl);
break;
}
} while ((cmd != 'q') && (cmd != 'Q'));
return 0;
}
void Create(List Ptrl)
{
int i, n;
char tmp;
printf("请输入数据的个数:");
scanf("%d",&n);
for (i = 0; i < n; ++i) {
printf("data[%d]=",i);
fflush(stdin);
scanf("%c",&tmp);
Ptrl->Data[i] = tmp;
Ptrl->Last++;
}
printf("\n");
}
void Printout(List Ptrl)
{
int i;
for (i = 0; i <= Ptrl->Last; ++i) {
printf("data[%d]=", i);
printf("%c\n", Ptrl->Data[i]);
}
}
void Insert(List Ptrl,ElementType x,int i)
{
int j;
if (Ptrl->Last == Maxsize - 1) {
printf("表满!\n");
return;
}
if (i<1 || i>Ptrl->Last + 2) {
printf("位置不合法!\n");
return;
}
for (j = Ptrl->Last; j >= i - 1; --j) {
Ptrl->Data[j + 1] = Ptrl->Data[j];
}
Ptrl->Data[i - 1] = x;
Ptrl->Last++;
}
void Delete(List Ptrl,int i)
{
int j;
if (i<1 || i>Ptrl->Last+1) {
printf("位置不合法!\n");
return;
}
for (j = i; j <= Ptrl->Last; ++j) {
Ptrl->Data[j - 1] = Ptrl->Data[j];
}
Ptrl->Last--;
return;
}
数据结构C语言版(清华大学_唐国民_第3版)顺序表
于 2022-04-10 22:31:51 首次发布