程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 單鏈表-數據結構 鏈表的創建 不知道怎麼改

單鏈表-數據結構 鏈表的創建 不知道怎麼改

編輯:編程綜合問答
數據結構 鏈表的創建 不知道怎麼改

#include
#include
#include

typedef struct Node //創建新的數據類型
{
int data; //數據域
struct Node * pNext; //指針域
}NODE, *PNODE; //NODE等價與struct Node //PNODE等價於struct Node *

//函數聲明
PNODE create_list();
void traverse_list(NODE pHead);

int main()
{
PNODE pHead = NULL;

pHead = create_list(); //create_lsit()功能:創建一個非循環單鏈表,並將該鏈表的頭結點的地址付給pHead
traverse_list(pHead);

return 0;

}

PNODE create_list()
{
int len; //用來存放有效節點的個數
int i;
int val; //用來臨時存放用戶輸入的結點的值

PNODE pHead = (PNODE)malloc(sizeof(NODE));
pHead->pNext = NULL;
if (NULL == pHead)
{
    printf("內存分配失敗,程序終止!");
    exit(-1);
}

printf("請輸入您需要生成的鏈表節點個數:len = ");
scanf("%d", &len);

for (i=0; i<len; i++)
{
    printf("請輸入第%d個結點的數據:", i+1);
    scanf("%d", &val);

    PNODE pNew = (PNODE)malloc(sizeof(NODE));
    if (NULL == pHead)
    {
        printf("內存分配失敗,程序終止!");
        exit(-1);
    }

    pNew->data = val;
    pNew->pNext = pHead->pNext;
    pHead->pNext = pNew;
}

return pHead;

}

void traverse_list(PNODE pHead)
{
PNODE p = pHead->pNext;

while(p)
{
    printf("%d ", p->data);
    p = p->pNext;
}

}


G:\編程\數據結構\源代碼\List.cpp(20) : error C2664: 'traverse_list' : cannot convert parameter 1 from 'struct Node *' to 'struct Node'

最佳回答:


問題出在你的函數聲明:
void traverse_list(NODE pHead);

而你的函數定義為:
void traverse_list(PNODE pHead);

由於聲明在main前,定義在main函數之後,所以main中調用的時候是根據你的聲明調用。注意你聲明的是NODE pHead,而你傳參為PNODE,所以報錯

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved