遍历链接列表1

时间:2019-12-25 05:30:05

标签: c linked-list

每次在堆中为链表分配内存时,我们都会得到一个地址,该地址链接到链表的下一个变量,而head是一个指向链表初学者节点的指针。

如果我们执行head = head + 1,则它指向堆的下一个链表,或者指向堆的随机存储器,或者指向堆中初学者列表的下一个存储器。

2 个答案:

答案 0 :(得分:0)

它指向您不应该访问的第一个元素之后的存储区域。

我认为您将数组的概念与链表混淆了。如果使用数组,则head = head + 1将为您提供数组中的下一个元素。但是在链接列表上,每个成员在内存中都有不同的位置,而获得该位置的唯一方法是取消引用前一个元素的next成员

答案 1 :(得分:0)

  

如果我们执行head = head + 1,则它指向下一个链表,或者指向堆的随机内存,或者指向堆中初学者列表的下一个内存。

假设using System; using System.Collections; using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Azure.Storage.Blob; // For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860 namespace blobApitest { [Route("api/[controller]")] [EnableCors("MyPolicy")] public class BlobController : Controller { private CloudBlobClient cloudBlobClient; public BlobController(CloudBlobClient cloudBlobClient) { this.cloudBlobClient = cloudBlobClient; } [HttpPost()] public OkObjectResult upload([FromForm] IFormFile file) { string FileName = file.FileName; var container = cloudBlobClient.GetContainerReference("<your container name>"); var blob = container.GetBlockBlobReference(FileName); blob.UploadFromStream(file.OpenReadStream()); return Ok("uploaded"); } [HttpGet()] public OkObjectResult GetAll() { var bloblist = new ArrayList(); var container = cloudBlobClient.GetContainerReference("<your container name>"); SharedAccessBlobPolicy ReadOnly = new SharedAccessBlobPolicy() { SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24), Permissions = SharedAccessBlobPermissions.Read }; var sas = container.GetSharedAccessSignature(ReadOnly); foreach (var blob in container.ListBlobs()) { bloblist.Add(blob.Uri+sas); } return Ok(bloblist); } } } 最初指向正确类型的有效对象,在该语句之后,head指向刚指向其最初指向的对象的末端。取决于很多因素,这可能会使它指向下一个节点,也可能不会使它指向下一个节点,但其中的一些不受您的控制,但是通常head的新值不是指向下一个节点。

加法运算对head最初指向的对象的重要性一无所知。任何类型的指针都是相同的操作。