这个链表程序错在哪啊!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这个链表程序错在哪啊!相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
#include<stdlib.h>
typedef struct pnodeint data;
struct pnode *next;node,*list;
initlist(node *head)head=(node*)malloc(sizeof(node));
if(!head)return 0;
head->next=NULL;
return 1;


node* creatlist(list head)node *p=head;
node *first=(node*)malloc(sizeof(node));
getchar();
scanf("%d",first->data);
printf("输入一些数,按ENTER退出\n");
while(scanf("%d",&(first->data)))if(head->next==NULL)head->next=first;
p=first;
return head;

void display(list head)node *p=head->next;
while(p->next!=NULL)printf("%d->",p->data)
p=p->next;
printf("%d\n";p->data);

void main()list head1;
initlist(&head1);
head1=creatlist(head1);
display(head1);
程序是可以运行了,但是往这个链表的节点里输入不了数据耶!输入了一个数据,程序就结束了,不知道怎么搞得!

你好!
上面的程序问题有点多,我帮你修改了一下:

# include <stdio.h>
# include <stdlib.h>
# include <malloc.h>

typedef struct pnode

int data;
struct pnode *next;
node,*list;

node * initlist(node *head)

head=(node*)malloc(sizeof(node));
if (NULL == head)

printf("分配内存失败!程序终止!");
exit(-1);


// head->next=NULL;
return head;


node* creatlist(list head)

node *p = head;
p->next = NULL;
// node *first = (node*)malloc(sizeof(node));
// getchar();
// scanf("%d",first->data);
// printf("输入一些数,按ENTER退出\n");
int i = 0,val;
while(i<5)

printf("请输入第%d个节点的有效数据:",i+1);
scanf("%d",&val);

node * pNew = (node *)malloc(sizeof(node));
if (NULL == pNew)

printf("分配内存失败!程序终止!");
exit(-1);

pNew->data = val;
p->next = pNew;
pNew->next = NULL;
p = pNew;

i++;
///
return head;


void display(list head)

node *p = head->next;
while(p->next != NULL)

printf("%d->",p->data);//
p = p->next;

printf("%d\n",p->data);


int main(void)

list head1;
head1 = initlist(head1);
head1 = creatlist(head1);
display(head1);

return 0;

/*
在vc++6.0中的输出结果:
------------------------
请输入第1个节点的有效数据:1
请输入第2个节点的有效数据:2
请输入第3个节点的有效数据:3
请输入第4个节点的有效数据:4
请输入第5个节点的有效数据:5
1->2->3->4->5
---------------------------
*/

仅供参考!呵呵
参考技术A #include<stdio.h>
#include<stdlib.h>
typedef struct pnodeint data;
struct pnode *next;node,*list;
initlist(node *head)head=(node*)malloc(sizeof(node));
if(!head)return 0;
head->next=NULL;
return 1;


node* creatlist(list head)

node *p=head;
node *first=(node*)malloc(sizeof(node));
getchar();
scanf("%d",first->data);
printf("输入一些数,按ENTER退出\n");
while(scanf("%d",&(first->data)))if(head->next==NULL)head->next=first;
p=first;
return head;


void display(list head)

node *p=head->next;
while(p->next!=NULL)

printf("%d->",p->data);
p=p->next;

printf("%d\n",p->data);


void main()list head1;
initlist(head1);
head1=creatlist(head1);
display(head1);

代码帮你改了能通过了 内容没改 不知道有什么问题 格式看的纠结 就没看了

所以 拜托你 代码格式弄好点给别人看嘛 ~

一个离散余弦的MATLAB程序,大家谁能给看看问题出在哪啊?

sig=imread('lena.bmp');
rat=1/4;
sig=double(sig)/255;
figure(1);
imshow(sig);
%D=dctmtx(n);二维离散余弦变换函数,返回n*n离散余弦变换矩阵
T=dctmtx(8);
DCTcoe=blkproc(sig,[8,8],'p1*p2',T,T');
%im2col重调图像块为列
%coeVar=im2col(DCTcoe,[8,8],'distinct');
%coe=coeVar;
%[Y, Ind ]= sort (coeVar ) ;
%求出DCT 系数排列矩阵的大小
%[m , n ]= size (coeVar ) ;
%按照压缩比保留系数
Snum =64-64*rat ;
for i=1:n
coe(Ind(1:Snum),i) =0;
end
%重新排列系数块
B2= col2im(coe,[8,8],[256,256], 'distinct' );
%进行余弦反变换
I2= blkproc (B2,[8,8], 'p1*x*p2',T,T');
%显示压缩后的图像
figure(4) ;
imshow(I2) ;
%计算归一化图像的均方误差
error = sig.^2-I2.^2;
MSE = sum (error (: ))/prod(size(I2));
程序运行后显示有错
??? Error: File: dct.m Line: 18 Column: 1
Missing variable or function.
我不明白错在哪里,请大家帮忙看下,谢谢了!!
我现在在做离散余弦变换方面的东西,并且需要将低频系数设置为0,请问有谁知道怎么设吗?
如果谁有现成的能执行的程序跟我联系,感激不尽!!

参考技术A 'p1*p2'这个未定义

另外你是不是自己定义dct函数,与matlab中的dct函数冲突?
参考技术B 应该是'P1.*P2'吧

以上是关于这个链表程序错在哪啊!的主要内容,如果未能解决你的问题,请参考以下文章

请问一下下面这个JAVA程序错在哪?谢谢!!

一个离散余弦的MATLAB程序,大家谁能给看看问题出在哪啊?

mysql的配置文件my.cnf在哪啊? 想修改它,怎么修改啊?

VC6怎么查找程序具体错在哪行?

这是个matlab关于添加水印的程序,帮忙看看错在哪

smartSVN的clean up 在哪啊?