求解一个关于线性表的问题
这是我写的一个线性表的简单操作:
#include<stdio.h>
#include<stdlib.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct {
long *elem;
int length;
int listSize;
}List;
bool InitList(List L){
L.elem = (long *)malloc(LIST_INIT_SIZE * sizeof(long));
if(!L.elem){
printf("线性表创建失败!");
return false;
}
L.length = 0;
L.listSize = LIST_INIT_SIZE;
return true;
}
bool ListPosInsert(List L,int pos,int x){
if((pos < 1) || (pos > L.length + 1)){
return false;
}
if(L.length >= L.listSize){
long *newbase = (long *)realloc(L.elem,(L.listSize+LISTINCREMENT)*sizeof(long));
if(!newbase) return false;
L.elem = newbase;
L.listSize += LISTINCREMENT;
}
long *q = &(L.elem[pos -1]);
for(long *p = &(L.elem[L.length - 1]);p >= q;--p){
*(p + 1) = *p;
}
*q = x;
L.length++;
return true;
}
void ListTraverse(List L)
{
for(int i = 0;i < L.length;i++){
printf("%d ",L.elem[i]);
}
}
int _tmain(int argc, _TCHAR* argv[]){
List La = {NULL,0,0};
bool b = InitList(La);
if(b) {printf("YES");}
else {printf("NO");}
ListPosInsert(La,1,11);
ListPosInsert(La,2,22);
ListPosInsert(La,3,33);
ListTraverse(La);
system("pause");
return 0;
}
我想插入三个元素,然后遍历出来,可是运行结果却没有,只输出了一个表示初始化成功的YES。。。
#include<stdio.h>
#include<stdlib.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct {
long *elem;
int length;
int listSize;
}List;
bool InitList(List L){
L.elem = (long *)malloc(LIST_INIT_SIZE * sizeof(long));
if(!L.elem){
printf("线性表创建失败!");
return false;
}
L.length = 0;
L.listSize = LIST_INIT_SIZE;
return true;
}
bool ListPosInsert(List L,int pos,int x){
if((pos < 1) || (pos > L.length + 1)){
return false;
}
if(L.length >= L.listSize){
long *newbase = (long *)realloc(L.elem,(L.listSize+LISTINCREMENT)*sizeof(long));
if(!newbase) return false;
L.elem = newbase;
L.listSize += LISTINCREMENT;
}
long *q = &(L.elem[pos -1]);
for(long *p = &(L.elem[L.length - 1]);p >= q;--p){
*(p + 1) = *p;
}
*q = x;
L.length++;
return true;
}
void ListTraverse(List L)
{
for(int i = 0;i < L.length;i++){
printf("%d ",L.elem[i]);
}
}
int _tmain(int argc, _TCHAR* argv[]){
List La = {NULL,0,0};
bool b = InitList(La);
if(b) {printf("YES");}
else {printf("NO");}
ListPosInsert(La,1,11);
ListPosInsert(La,2,22);
ListPosInsert(La,3,33);
ListTraverse(La);
system("pause");
return 0;
}
我想插入三个元素,然后遍历出来,可是运行结果却没有,只输出了一个表示初始化成功的YES。。。
...全文
相关推荐
多项式求解及线性方程组求解(线性表及其应用)
总结来说,"多项式求解及线性方程组求解(线性表及其应用)"这个主题涵盖了解决复杂数学问题的基本思路,结合了抽象数据类型(如线性表)和高效的计算方法。
一个递增有序的线性表L中插入一个值为x的元素,并保持其递增有序特性
本文详细介绍了如何在一个递增有序的线性表中插入一个元素,并保持其递增有序特性。通过示例代码,解释了算法的具体实现过程,包括处理元素排在列表第一和最后的特殊情况。
数据结构——“线性表的应用举例“ 深度分析学完线性表工作中应用在哪?
本文介绍了线性表在处理多项式运算和Joseph问题中的应用。通过线性表结构,实现了多项式的高效合并,避免了无效项的存储浪费。同时详细阐述了Joseph问题的算法实现,利用循环链表模拟过程,动态删除满足条件的结点。通过实例展示了算法的执行流程,加深了对线性表操作的理解。
educoder数据结构与算法 线性表 第1关:实现一个顺序存储的线性表
本篇博客详细介绍了如何实现Seqlist.cpp中的SL_InsAt、SL_DelAt和SL_DelValue函数,以支持线性表的插入、删除和查找功能,包括数据结构的实现、操作函数的编写以及相关测试案例。
数据机构 线性表 单链表 栈 汉诺塔 迷宫求解 等的演示
通过本演示所提供的直观可视化的学习方式,初学者能够更快地理解线性表、单链表、栈、汉诺塔和迷宫求解等数据结构和算法的应用,从而提高编程技能和解决问题的能力。


