问一下怎么样给双向链表中的指针数组,键盘输入字符串赋值

C语言 码拜 9年前 (2016-02-02) 854次浏览
#include <stdlib.h>
#include <stdio.h>
#define NULL 0   
#define amount1 100			//结构体中*arr[]数组长度,用来定义扩充成员个数
 typedef struct node
{
	struct node  *pre;			//指向前驱
	char *arr[amount1];
	struct node *next;			//指向后继
}NODE;
NODE *head;

问一下怎么在第一个节点中,从键盘输入N个字符串给*arr[amount1]    空格隔开,回车结束赋值
_(:зゝ∠)_本人也不知道怎么给结构体中的*arr[amount1]申请内存

解决方案:10分
没人回答吗?
你的char *arr[amount1]是个指针数组,每个元素都是指针。
你可以随意申请一个存储空间,例如char* pInput,C用malloc,C++用new,然后用scanf或cin输入你想要的字符串,输入完毕后,把pInput存到arr里面去。例如第一个字符串,就是arr[0] = pInput。
使用完毕后,记得释放pInput的内存。
解决方案:50分
供LZ参考,这里先malloc头结点的空间,然后每次能读到一个字符串就malloc一个字符串的空间

#include <stdlib.h>
#include<iostream>
#include <stdio.h>
using namespace std;
#define NULL 0   
#define amount1 100            //结构体中*arr[]数组长度,用来定义扩充成员个数
 
 typedef struct node
{
    struct node  *pre;            //指向前驱
    char *arr[amount1];
    struct node *next;            //指向后继
}NODE;
NODE *head;
int main()
{
	head = (NODE *)malloc(sizeof(NODE));
	int index = 0;
	char buffer[64] = {0};
	while (scanf("%s",buffer) != EOF) 
    {
		head->arr[index] = (char *)malloc(strlen(buffer) + 1);
		strcpy(head->arr[index], buffer);
		printf("index = %s\n",head->arr[index]);
        index++;
		if(getchar() == ""\n"")break;//读到输入的字符串的末尾了,结束循环
    }
	system("pause");
	return 0;
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明问一下怎么样给双向链表中的指针数组,键盘输入字符串赋值
喜欢 (0)
[1034331897@qq.com]
分享 (0)