c语言数据结构线性表求解

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 /*线性表的最大长度*/
typedef int ElemType;
//描述线性表
typedef struct
{
ElemType data[MAXSIZE];
int length; /*当前表的长度*/
} SeqList;
//创建线性表
SeqList *init_SeqList()
{
SeqList*L;
L=(SeqList*)malloc(sizeof(SeqList));
L->length=0;
return L;
}
// 插入
void InsertList(SeqList *L, int i, ElemType e)
{
int k;
if (L->length==MAXSIZE)
{
printf("The table is overflow!"); /*表空间已满,不能插入*/
return;
}
if (i<0||i>L->length)
{
printf("The position is mistake!");
return;
}
for(k=L->length-1;k>=i;k--)
{
L->data[k+1]=L->data[k];/* 结点移动 */
L->data[i]=e;
L->length++;
}

}

//删除元素
int sqListDelete (SeqList *L,int i) //???????
{
int k;
if(i<1 || i>=L->length)/*检查删除位置的合法性*/
{ printf ("The position is mistake!"); return 0; }
for(k=i-1;k<L->length-1;k++)
L->data[k]=L->data[k+1]; /*向前移动*/
L->length--;
return i;
}
//
int SqlistLcate(SeqList L,ElemType x) //??????

{ int i=0;
for(i=0;i<L.length;i++)
if (L.data[i]==x)
return i; /*返回的是存储位置(下标)*/
return -1;
}
//主函数
int main()
{
int x,loc;
int i=0;
SeqList list;
*init_SeqList(&list);

//添加10个数字给线性表list

for (i=0; i<10; i++)
{
printf("please input numbers");
scanf ("%d",&x);
InsertList(&list,i+1,x);
}
for (i=0;i<list.length;i++)
printf ("%3d",list.data[i]);
//在第2个位置插入一个元素-1
InsertList(&list, 2, -1);
for (i=0;i<list.length;i++)
{printf ("%3d",list.data[i]);
}
//删除第5个
sqListDelete(&list,5);
for (i=0;i<list.length;i++)
printf ("%3d",list.data[i]);

//查找
loc=SqlistLcate(list,4);
printf ("%d",loc);
return 0;
}

#include <stdio.h>
#include <stdlib.h>

#define MAXSIZE 100 /*线性表的最大长度*/
typedef int ElemType;
//描述线性表
typedef struct { 
ElemType data[MAXSIZE]; 
int length; /*当前表的长度*/
}SeqList;
 
//初始化线性表
SeqList *init_SeqList() {
SeqList *L = (SeqList *)malloc(sizeof(SeqList));
L->length = 0; 
return L; 
}

// 插入
void InsertList(SeqList *L,int i,ElemType e) {
int k;
if(L->length == 0 || i == L->length) {
L->data[L->length] = e;
++L->length;
return;
}
if (i < 1 || i > L->length) { 
printf("The position is mistake!\n");
printf("插入数据%d失败。\n",e);
return;
}
for(k = L->length;k >= i;k--) 
L->data[k] = L->data[k - 1];/* 结点移动 */
L->data[i - 1] = e;
L->length++;
}

//删除元素
int sqListDelete(SeqList *L,int i) { //???????
int k;
if(i < 1 || i >= L->length) { /*检查删除位置的合法性*/
printf ("The position is mistake!"); 
return 0;
}
for(k = i - 1;k < L->length;k++) 
L->data[k] = L->data[k+1]; /*向前移动*/
L->length--; 
return i;
}

// 
int SqlistLcate(SeqList *L,ElemType x) { //??????
int i;
for(i = 0;i < L->length;i++) {
if(L->data[i] == x)
return i + 1; /*返回的是存储位置*/
}
return -1; 
}

void Show(SeqList *list) {
for(int i = 0; i < list->length;++i)
printf("%d ",list->data[i]);
printf("\n");
}

//主函数
int main() { 
int x,loc;
int i;
SeqList *list = init_SeqList();
//添加10个数字给线性表list
printf("please input 10 numbers:");
for(i = 0; i < 10; i++) {
scanf("%d",&x);
InsertList(list,i,x);
}
Show(list);
printf("在第2个位置插入一个元素999后\n");
InsertList(list,2,999);
Show(list);
printf("删除元素%d后。\n",list->data[5 - 1]);
sqListDelete(list,5);
Show(list);
//查找
loc = SqlistLcate(list,4);
if(loc >= 0) printf("第4个元素是:%d\n",list->data[loc]);
else printf("没有找到第4个元素。\n");
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-04-02
问题是什么啊,说清楚
相似回答