顺序表的初始化怎么用C语言实现?举个例子,不胜感激

如题所述

你所说的顺序表就是指单向链表吧。举个例子:
声明:typedef struct queue{
int data;
struct queue * next;
}queuetype; //定义结构体类型
typedef queuetype * pqueuetype; //定义结构体指针类型
pqueuetype front,rear; //声明链表头指针和尾指针

操作:
void queueinital(){
front=NULL;
rear=NULL; }
这一段函数就是所谓的单向链表的初始化,即将链表头指针和尾指针都赋值为空而已。如果你指的是将链表各个单元中的所有数据初始化,那需要先明白一个问题,链表各单元并不是先申请空间再等待你输入值的,而是,你有一个值,程序申请空间,然后将值写入。看一下下面的入队函数:
void inqueue(int x){
pqueuetype p=(pqueuetype)malloc(sizeof(queuetype));
p->data=x;
p->next=NULL;
if(rear==UNLL){
rear=p;
front=p;
}
else{
rear->next=p;
rear=p;}
}
}
通过这个入队函数,将值写入链表,链表根据你写入值的多少一个个申请空间,改变长度,通过所有指针将所有数据单元相连。实现单向顺序链表结构。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-27
e,纠正一下,严重错误。

如果是链表,则需要一个节点一个节点的进行初始化
pNode = sqList.pHead;
while(pNode!= null)
{
pNode->data = 1; //赋你希望的值
pNode = pNode->next;
}本回答被网友采纳
第2个回答  2013-10-27
初始化为0:
int a[10];
memset(a, 0, sizeof(int));

初始化为有意义的数据:
int a[10] = {1,2,...,10};
或者: int a[] = {1,2,...,10};
或者:
int a[10];
for (int i=0; i<10; i++)
{
a[i] = i;
}
第3个回答  2013-10-27
如果是链表,则需要一个节点一个节点的进行初始化
pNode = sqList.pHead;
while(list->next != null)
{
pNode->data = 1; //赋你希望的值
}

顺序表的定义,赋初值
}Sqlist;\/\/下面构造一个空的线性表(顺序表)并对其初始化的 *函数 int InitList_Sq(Sqlist &L){ L.elme = (int * )malloc(LIST_INIT_SIZE *sizeof(int));if (! L.elme) printf("OVERFLOW");\/\/存储分配失败 L.length = 0; \/\/空表的长度为0 L.listsize = LIST_INIT_SIZE; \/\/初...

我想请教关于C语言方面的问题,不胜感激
--在左边表示你要先进行自增自减运算,而在右边则表示要等这一行的表达式运算完成后再进行自增,自减,当然,如果自增自减是包含在括号内的,要先进行运算。先看那个?表达式,他的意思是判断--a和b++是否相等,相等,则表达式结果是--a,不相等,则表达式结果是b++。因为是--a,所以进行运算时...

求大神帮忙用C语言解决一下,不胜感激,单片机
\/\/"A" 0x83, \/\/"b" 0xC6, \/\/"C" 0xA1, \/\/"d" 0x86, \/\/"E" 0x8E, \/\/"F" 0x89, \/\/"H" 0x8C, \/\/"P"};void delay(uint t){ uchar i; while(t--) for(i = 0; i < 200; i++)...

求C语言高手指点迷津,不胜感激。 由键盘任意输入3个数据,将它们按从大...
首先,应该没有a>b>c这种写法,应该是a>b&&b>c,先改这个吧 顺便提醒你一下,关于b>c,返回型应该是一个bool型,也就是0(假)或1(真),所以你输入2,9,8,在执行if(a>b>c||a>=b>c||a>b>=c)printf("%f,%f,%f\\n",a,b,c);时就结束了 ...

...用户输入两个元素显示期间所有的元素。不胜感激
(1)A 代表 H D 代表 O C代表Al B代表S E代表K (2)2 6结构的,你应该会(3)弱 2HCl+Na2S=H2S+NaCl (4)S2->K+>Al3+>O2-

请高手指点一下,不胜感激!用C语言逻辑表达式描述:
(1) (a==100)&&(b>85)&&(c>85) || (b==100)&&(a>85)&&(c>85)"&&" 表示且,"||"表示或,因为"&&"的运算优先于"||" 所以或的两边可以不用再加括号 (2) !(b % a == 0) "!" 表示非。 也可以 b%a != 0 (3)(a > c) && (b > c)...

求高手解决一个c语言问题,额不胜感激~
if( a[i] == '=' ) \/\/如果a的第i字符是等号

还是C语言问题~~小女子不胜感激大家!
1. 0 -> a%=n%2 ==> a=a%(n%2)=12%(5%2)=12%1=0.2. b,b -> a首先为'a',执行print("%c,",++a),此时a='b',接着执行printf("%c\\n",b=a++),此时b='b',所以打印'b',之后a成了c,但是没有打印.3. 2 -> m=a>b使m的值为0,不再计算后面的表达式,所以n依然为...

高手请进!你好,请把我写一个C语言的编程题,本人不胜感激!
void WriteDat(int a[],int b[]);\/\/为了调试方便,将学生人数取为5,将其中的5改为100就合题意了.思路较简单,未加标注 void main(){ int aa[100],bb[100];ReadDat(aa,bb);jsSort(aa,bb);WriteDat(aa,bb);} void ReadDat(int a[],int b[]){ int i;for(i=0;i<5;i++){...

C语言:!(x+y)+z-1 && y+z\/2 跪求高手解答 不胜感激。 谢谢!!
先算(x+y),再算(x+y)-z,再算(x+y)-z-1。若(x+y)-z-1的结果为非零数,则!(x+y)-z-1的值为0。(x+y)-z-1的值为0,则!(x+y)-z-1的值为1。先算z\/2,再算y+z\/2。若y+z\/2的值为0,那么整个表达式的值为0。若左边(x+y)-z-1的结果为1 ,y+z\/2...

相似回答