#include
#define MAXSIZE 10
typedef struct {
int elem[MAXSIZE];
int length;
}sqlist;
void listdelete(sqlist &l,int i){
for(int j=i;j-1]=l.elem[j];
printf("111\n");
}
l.length--;
}
int main(){
sqlist l;
int n;
l.length=n;
scanf("%d",&n) ;
for(int i=0;iscanf("%d",&l.elem[i]);
}
int i;
scanf("%d",&i);
printf("Before:(%d",l.elem[0]);
for(int i=1;iprintf(",%d",l.elem[i]);
}
printf(")\n");
if(i<1||i>l.length){
printf("Delete position error!");
}
else{
listdelete(l,i);
printf("After:(%d",l.elem[0]);
for(int j=1;jprintf(",%d",l.elem[j]);
}
printf(")");
}return 0;
}
修改如下,改动处见注释,供参考:
#include<stdio.h>
#define MAXSIZE 10
typedef struct {
int elem[MAXSIZE];
int length;
}sqlist;
void listdelete(sqlist &l,int i){
for(int j=i;j<l.length;j++){
l.elem[j-1]=l.elem[j];
printf("111\n");
}
l.length--;
}
int main(){
sqlist l;
int n;
//l.length=n; 移动到 n 输入语句后
scanf("%d",&n) ;
l.length=n; //此句移动到这里
for(int i=0;i<n;i++){
scanf("%d",&l.elem[i]);
}
int i;
scanf("%d",&i);
printf("Before:(%d",l.elem[0]);
for(int i=1;i<l.length;i++){ // for(int i=1;i<n;i++)
printf(",%d",l.elem[i]);
}
printf(")\n");
if(i<1||i>l.length){
printf("Delete position error!");
}
else{
listdelete(l,i);
printf("After:(%d",l.elem[0]);
for(int j=1;j<l.length;j++){
printf(",%d",l.elem[j]);
}
printf(")");
}
return 0;
}
仅供参考,谢谢!
#include<stdlib.h>
#include<stdio.h>
#define MAXSIZE 10
typedef int ElemType;
typedef struct
{
ElemType *elem;
ElemType length;
ElemType maxsize;
} SqList;
// 初始化线性表
void init(SqList * L)
{
L->elem = malloc(sizeof(ElemType) * MAXSIZE);
L->length = 0;
L->maxsize = MAXSIZE;
if (L->elem)
printf("初始化成功!\n");
else
printf("初始化失败!\n");
}
int listdelete(SqList * L)
{
int i;
printf("请输入你要删除的元素所在位置:\n");
getchar();
scanf("%d", &i);
if (L->length == 0)
{
printf("当前线性表为空\n");
return 0;
}
if (i > L->length)
{
printf("超出当前元素个数!\n");
return 0;
}
for (int j = i; j < L->length; j++)
{
L->elem[j - 1] = L->elem[j];
}
L->length--;
printf("删除第%d个元素成功!\n", i);
return 1;
}
int main(void)
{
SqList L;
int n;
init(&L);
scanf("%d", &n);
if (n > 0 && n <= MAXSIZE)
L.length = n;
else
{
puts("超出线性表容量上限/下限");
return -1;
}
// 按顺序插入数据
for (int i = 0; i < n; i++)
{
scanf("%d", &L.elem[i]);
}
printf("\n删除前:(");
for (int i = 0; i < n; i++)
{
printf("%d:%d ", i + 1, L.elem[i]);
}
printf(")\n");
listdelete(&L);
printf("\n删除后:(");
for (int i = 0; i < L.length; i++)
{
printf("%d:%d ", 1 + i, L.elem[i]);
}
printf(")\n");
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话://初始化队列
void QueueInit(Queue* p)
{
//参数传入的判断
assert(p);
//给一个头结点
p->front = CreateQueueNode(0);
p->back = p->front;
}