#include <malloc.h>
#include <stdio.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct{
int *elem;
int length;
int listsize;
}Sqlist;
Sqlist* InitSqlist()
{
Sqlist * L=NULL;
L=(Sqlist*)malloc(sizeof(Sqlist));//L只是个指针,要指向一个Sqlist.
L->elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
L->length=0;
L->listsize=LIST_INIT_SIZE;
return L;
}
void DisplaySqlist(Sqlist* L2)
{
int i;
for(i=0;i<L2->length;i++)//去掉-1,
{
printf("%d ",L2->elem[i]);
}
}
Sqlist* List_Insert_Sq(Sqlist* L3,int i,int e)
{
int * newbase,*p,*q;
if(i<1||i>L3->length+1)return L3;
if(L3->length>=L3->listsize)
{
newbase=(int*)realloc(L3->elem,(L3->listsize+LISTINCREMENT)*sizeof(int));
if(!L3->elem) return L3;
L3->elem=newbase;
L3->listsize+=LISTINCREMENT;
}
q=&(L3->elem[i-1]);
for(p=&(L3->elem[L3->length-1]);p>=q;--p) *p=*(p+1);
*q=e;
++L3->length;
return L3;
}
Sqlist* List_Delete_Sq(Sqlist* L4,int i,int e)
{
int *p,*q;
q=&(L4->elem[i-1]);
for(p=&(L4->elem[L4->length-1]);p>=q;--p) *(p+1)=*p;
*q=e;
++L4->length;
return L4;
}
void main()
{
Sqlist* L1;
Sqlist* i,e;
L1=InitSqlist();
L1=List_Insert_Sq(L1,1,1);
L1=List_Insert_Sq(L1,2,3);
L1=List_Insert_Sq(L1,3,5);
L1=List_Delete_Sq(L1,i,e);
DisplaySqlist(L1);
}
我把主函数里德,就你说的那个改为void main()
{
Sqlist* L1;
L1=InitSqlist();
L1=List_Insert_Sq(L1,1,1);
L1=List_Insert_Sq(L1,2,3);
L1=List_Insert_Sq(L1,3,5);
DisplaySqlist(L1);
} 还是起不到我要删除的作用,帮改成一个能准确运行的删除操作、谢了!
C语言顺序表的实现最后运行不了最后是error: expected '=...
函数声明后面要加分号 注意区分英文和汉字下的)和; 还有creat函数里printf有%d但后面没有形参 不知道这个可不可以 你可以试试改改
C语言改错下面是顺序表的建立查找插入和删除但typedef enum {fals...
\/\/typedef enum {false, true} bool 这个是C语言内置的,不要去声明
C语言数据结构中“顺序表”应怎样清空和销毁?
1、首先是定义一个这样的函数,名称为【SeqSearch】,返回值为Int。2、接下来就可以,传入一个数组,一个长度,和一个查找的值。3、此时,就能从零开始到长度减一个个判断。4、此时,可以判断,如果找到了就返回当前下标加一。5、否则就让这个函数返回负一。6、此时,可以在Main函数中配合运行测试。7...
c语言顺序表运行错误
从你的屏幕输出可以看出来。最后一次操作选择了1.就是调用insert 是在insert的函数里出错的。你从屏幕输入1 2 告诉函数要在第一个元素之前插入2这个值。看这里:q=&(L.elem[i-1]); \/\/q指向要插入的位置 for(p=&(L.elem[L.length-1]);p>=q;--p) \/\/p指向最末一个元素,结束条件是...
C语言,执行顺序表的操作出现了语句不按编写的顺序运行的情况。求大神...
scanf("%d\\n",&n);scanf("%d\\n",&e);两个问题都是这样引起的,输入一个数加一个回车,所以变了输入一个数再加两个回车,第一个问题只要你不加第二个回车,数据会储在缓冲区,直到你输入回车后才scanf
C语言编写顺序表总是显示错误
P一般要大写,你看哈输入法的时候编写的时候错了没。哦还有,mian()这个括号一定要挨着mian,不是也会出错。
关于C语言的顺序表 插入功能完成后不能输出正确数据?
你这代码有以下错误要改:onlist(Sqlist *L,int len)函数中,1、if(len+n>=MAXSIZE)要改成if(len+n>=MAXSIZE && n>len+1)顺序表不光数组不能越界,也不能跳越赋值,比如当前len是3,那么你最多只能赋值第4个元素,不能直接赋值第5个元素。2、for(j=len-1;j>point-1;j--)要改成...
如何用C语言做到增删改查 内详
就是用C语言编写一个小程序在程序执行的时候可以反复录入数据然后还可以修改数据删除数据查找数据可以再设计几个输入指令例如输入1是增加数据输入2为查找数据可以使用文件来完成也可以... 就是用C语言编写一个小程序 在程序执行的时候可以反复录入数据然后还可以 修改数据 删除数据 查找数据可以再设计几个输入指令 例如...
用c语言编写算法:已知顺序表L,编写一个函数实现删除L的倒数第k个结点...
int delete_K(Sqlist L,int K,int *e){ int i,*p;if(L.length<K || 1>K)return 0;p=L.elem + (L.length-K);for(i=L.length-K;i<L.length-1;++i,++p)p=*(p+1);L.length--;return 1;}
c语言简单的顺序表,输了一个数据就退出了,可以帮我看一下哪里出错了吗...
之后你要构建最简单的单向链表,就是不断创建这个结构变量,然后让上一个结构的指针指向新创建的结构变量。第一个创建的叫首节点,你可以定义一个指针指向它,或者定义一个节点让其指针指向它(这个节点不保存数据,只用于定位首节点)。对链表的增、删、查,都是对链表指针的操作。