c语言数据结构线性表求解
发布网友
发布时间:2023-05-29 02:45
我来回答
共2个回答
热心网友
时间:2024-11-01 21:13
#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;
}
热心网友
时间:2024-11-01 21:14
问题是什么啊,说清楚