您好我有一项任务要求我创建一个链接列表 并用0到10的整数填充它。我已经这样做了。 我遇到的问题是与最后一部分有关 一个单独的用户定义函数,它传递一个指针 指向列表的头部。当我这样做并尝试printf 列表中的整数我得到一个错误,说它不是 结构或联合中的某些东西。请帮忙,我很难过 如何做下一步。
#include <stdio.h>
#include <stdlib.h>
int main()
{
struct list
{ //creating structure
int num;
struct list *next; //used to point to next node on list
};
struct list *head; //used to navigate the linked list
struct list *current;
struct list *new;
head=malloc(sizeof(struct list)); //gives memory space to start off linked list
head->num=0;
head->next=NULL;
current=head; //current equals head now so that one can easily navigate the list with the loop
int c=0; //loop counter int
while(c<11) //populates the linked list with integers
{
new=malloc(sizeof(struct list));
current->next=new;
if(current->next == NULL) //checks to see if memory created
printf("This has failed");
current=new;
current->num=c+1;
c++;
}
struct list **headptr=&head; //PROBLEM: I'm assuming here is where I'm having the issue.
print(headptr);
}
void printList(struct list** head) {
int x; //loop counter
struct list *current;
while (x<11) {
if(x==0)
printf("%d",head.num);
current
printf("%d",current->num);
}
}
答案 0 :(得分:0)
试试此代码
我在您的代码中进行了一些更改..
1.在这里你使用两个函数因此我们需要全局声明结构。这样两个函数都可以使用结构原型
2.C语言有自上而下类型的方法因此我们需要在程序顶部给出import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.app.ActionBar;
import android.app.FragmentTransaction; // unused statement
public class Main extends FragmentActivity implements ActionBar.TabListener {
private ViewPager viewPager;
private TabsFragmentPagerAdapter mAdapter;
private ActionBar actionBar;
// Tab titles
private String[] tabs = {"Top Rated", "Games", "Movies"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initilization
viewPager = (ViewPager) findViewById(R.id.pager);
actionBar = getActionBar();
mAdapter = new TabsFragmentPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(mAdapter);
actionBar.setHomeButtonEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// Adding Tabs
for (String tab_name : tabs) {
actionBar.addTab(actionBar.newTab().setText(tab_name)
.setTabListener(this));
}
}
}
函数的原型或在顶部自定义函数
3.在printList
块中,我们必须添加语句while(c<11)
以识别current->next=NULL
函数中使用的列表的结束位置
4.当我们使用printList
函数时,必须进行转换。
5.不需要按地址发送malloc
。它增加了程序的复杂性。所以我只是将那部分更改为更简单的方法
headptr