首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++代码出现异常

2012-09-25 
C++代码出现错误C/C++ code#include iostreamusing namespace std#includemalloc.h#define LEN sizeo

C++代码出现错误

C/C++ code
#include "iostream"using namespace std;#include<malloc.h>#define LEN sizeof(struct adapt)struct adapt//链表{    int n;    struct adapt *next;};struct adapt *creat(int x)//创建含有x个元素的链表{       struct adapt *head;          struct adapt *p1,*p2;    int n=0;    p1=p2=(struct adapt*) malloc(LEN);    cin>>p1->n;    head=NULL;    while(1)    {            n=n+1;        if(n==1) head=p1;        else p2->next=p1;        p2=p1;        p1=(struct adapt*)malloc(LEN);        if(n<x)            cin>>p1->n;        else break;    }    p2->next=NULL;    return(head);}struct adapt *insert(struct adapt *head,int n)//在链表首部插入n{     struct adapt *p=NULL;    struct adapt a={0,p};    struct adapt *stud;stud=&a;    stud->n=n;    if(head==NULL)    {stud->next=NULL;}      else    {             stud->next=head;    }    return(stud);}void showLink(struct adapt * head){    struct adapt * temp=head;    cout<<"Link Data:";//    while (head!=NULL)    {        cout<<"->"<<head->n;        head=head->next;    }    cout<<endl;    head =temp;}int main(){    int n,m,s;    cin>>n>>m;    int *q=new int[m];    struct adapt* p;    p=creat(n);    for(int i=0;i<m;i++)    {        cin>>q[i];    }    for(int j=0;j<m;j++)    {        cout<<"【Times:"<<j+1<<"】"<<endl;//        p=insert(p,q[j]);//        struct adapt ko;        showLink(p);//    }    system("pause");}


测试输入数据为:
若输入参数为:
5 5
1 2 3 4 5
3 3 6 2 3

经过调试发现showlink函数输出时出错,这个怎么解决啊


[解决办法]
C/C++ code
// linker.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>using namespace std;struct Link{    int nData;    Link* pNext;    Link(int n)    {        nData=n;        pNext=NULL;    }    Link(){pNext=NULL;}};Link* Create(int nCount){    if (!nCount)    {        return NULL;    }    Link* Head=new Link;    cin>>Head->nData;    Link* pTemp=Head;    for (int n=0;n<nCount-1;n++)    {        Link* pLinkNode=new Link;        cin>>pLinkNode->nData;        pTemp->pNext=pLinkNode;        pTemp=pLinkNode;    }    pTemp->pNext=NULL;    return Head;}void FreeLink(Link* pSource){    Link* pTemp=pSource;    while(pTemp)    {        Link* p=pTemp->pNext;        delete pTemp;        pTemp=p;    }}Link* Insert(Link*& pHead,int nData){    if (NULL==pHead)    {        pHead=new Link(nData);        return pHead;    }    Link* pNewHead=new Link(nData);    pNewHead->pNext=pHead;    return pNewHead;}void ShowLink(Link*& pHead){    if (pHead)    {        Link* pTemp=pHead;        while(pHead!=NULL)        {            cout<<pTemp->nData<<" ";            if(NULL==(pTemp=pTemp->pNext))            {                break;            }        }        cout<<endl;    }}int _tmain(int argc, _TCHAR* argv[]){    Link* pHead=Create(3);    ShowLink(pHead);    pHead=Insert(pHead,9);    ShowLink(pHead);    FreeLink(pHead);    return 0;}
[解决办法]
原因是insert不对。参考如下修改:

//删,不能返回局部变量地址 struct adapt a={0,p};
struct adapt *stud=(struct adapt*)malloc(LEN);//改 stud=&a;

热点排行