输入一组整型元素序列,建立线性表的顺序存储结构。 实现该线性表的遍历。 在该顺序表中查找某一元素,查找成功显示查找元素,否则显示查找失败。 在该顺序表中删除或插入指定元素。
C语言源代码如下:
#include<stdio.h>
#include<stdlib.h>
#define max 20;
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
LinkList creat_l()
{
LinkList p,pre,head;
int x;
int n,i;
printf("请输入数表的大小");
scanf("%d",&n);
head=pre=(LinkList)malloc(sizeof(LNode));
printf("请输入一组整数,n表示最大数量:\n");
for(i=0;i<n;i++)
{
scanf("%d",&x);
p=(LinkList)malloc(sizeof(LNode));
p->data=x;
pre->next=p;
pre=p;
}
pre->next=NULL;
return head;
}
void cosplay(LinkList head)
{
LinkList p;
p=head->next;
while(p)
{
printf("%3d",p->data);
p=p->next;
}
printf("\n");
}
int search_l(LinkList head)
{
LinkList p;
int count=1,x;
p=head->next;
printf("请输入要查找的数");
scanf("%d",&x);
while(p)
{
if(p->data==x)
{
printf("查找成功.\n");
return count;
}
p=p->next;
count++;
}
printf("查找失败。\n");
return 0;
}
int listInsert_l(LinkList &l){
int i;int e;
printf("请输入要插入的位置");
scanf("%d",&i);
printf("请输入要插入的数");
scanf("%d",&e);
LinkList p,s;
int j;
p=l;
j=0;
while(p&&j<i-1)
{
p=p->next;
++j;
}
if(!p||j>i-1)
return 0;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next=s;
return 1;
}
int listDelete_l(LinkList &l)
{
int i;
int e;
LinkList p,q;
int j;
p=l;
j=0;
printf("请输入要删除的数");
scanf("%d",&e);
printf("请输入要删除数的位置");
scanf("%d",&i);
while(p->next&&j<i-1){
p=p->next;++j;
}
if(!(p->next)||j>i-1)
return 0;
q=p->next;p->next=q->next;
e=q->data;free(q);
return 1;
}
int main()
{
LinkList l;
int y;
l=creat_l();
cosplay(l);
y=search_l(l);
listInsert_l(l);
cosplay(l);
listDelete_l(l);
cosplay(l);
return 0;
}