$CsvContent = Import-Csv "C:\Users\Administrator\Documents\lab8\Lab8_db1.csv" | Select-Object -First 100
Foreach ( $Line in $CsvContent )
{
$Line.FirstName | Add-Content -Path C:\Users\Administrator\Documents\lab8\FirstNames.txt
$Line.LastName | Add-Content -Path C:\Users\Administrator\Documents\lab8\LastNames.txt
}
我只是想知道head_node是否也是一个new_node,并且两者都是相同的数据类型结构节点,那么为什么我们只是将它定义为
struct node
{
int data;
struct node *next;
};
void addstart (struct node **n, int new_data){
struct node *new = (struct node*)malloc(sizeof(struct node));
new->data=new_data;
new->next=*n;
*n= new;
}
int main(){
struct node* head = NULL;
addstart(&head,5);
return 0;
}
和其他节点:
struct node* head = NULL;
答案 0 :(得分:0)
struct node* head = NULL;
因为head
只是跟踪列表的head
而没有别的。现在不要新节点做同样的事情吗?
malloc
跟踪您分配的内存,然后使用后续节点的next
属性指出它。
head
与newnode
属于同一类型,两者的功能相同。但是我们对head
赋予了不同的含义 - 我们将它指向列表的head
而不是使它成为我们可以扔掉的局部变量。
head = NULL
?啊!那是因为我们总是创建一个节点并使其下一个属性指向当前head
,然后我们改变头部以使新节点成为我们链接列表的一部分。
最初第一个节点应该是
+----+
| +------+
+----+ |
V
NULL (Well to make this NULL we just make head = NULL initially)
因为它不需要 - 就这么简单。当head
的目的是指向已分配的节点时,为什么要分配额外的内存空间然后将其分配给head
。当我们添加另一个额外节点时,我们将其添加到链表的head
并使其成为头。它只不过是指向列表的开头。就是这样。
new
不是一个好的变量名。尝试一些好的。在命名变量之前先想一想,这将为您节省大量时间。
答案 1 :(得分:0)
因为当你声明头部时它没有任何指向的东西,它表示列表是空的,一旦添加数据它就可以指向列表中的第一个节点。