各位前辈大家好 小弟最近自学C语言到资料结构的部分
今天在练习单向的单向链结
我用的是 Dev C++来写 电脑是win7
因为刚进入这个章节所以只是先简单的 创造节点 连结节点 删除节点
我预期的动作流程如 http://imgur.com/qYbrYgG
程式码如下
#include<stdio.h>
#include <stdlib.h>
struct listNode {
char data;
struct listNode *nextPtr;
};
typedef struct listNode *ListNodePtr;
int main(void){
ListNodePtr startptr=NULL;//把startptr指向NULL
ListNodePtr ONE_node;//创立第一个节点
ONE_node=(ListNodePtr)malloc(sizeof(listNode));//给定实体空间
startptr=ONE_node;//把startptr指向第一个节点
ONE_node->data=10;
ONE_node->nextPtr=NULL;//把第一个节点指向NULL
ListNodePtr TWO_node;//创立第二个节点希望把第一个节点指向第二个节点
TWO_node=(ListNodePtr)malloc(sizeof(listNode));//给定实体空间
TWO_node->data=11;
TWO_node->nextPtr=NULL;//把第二个节点指向NULL
ONE_node->nextPtr=TWO_node;//把第一个节点指向第二个节点
ListNodePtr THREE_node;//创立第三个节点希望第二个节点指向第三个节点
THREE_node=(ListNodePtr)malloc(sizeof(listNode));//给定实体空间
THREE_node->data=13;
THREE_node->nextPtr=NULL;//把第三个节点指向NULL
TWO_node->nextPtr=THREE_node;//把第二个节点指向地三个节点
ListNodePtr FOUR_node;//创立第四个节点
//希望插在第二个节点和第三个节点中间
FOUR_node=(ListNodePtr)malloc(sizeof(listNode));//给定实体空间
FOUR_node->data=12;
TWO_node->nextPtr=FOUR_node;//把第二个节点指向第四个节点
FOUR_node->nextPtr=THREE_node;//把第四个节点只向第三个节点
printf("\n%s",THREE_node->nextPtr);
printf("\n%d",THREE_node);
printf("\n%d",FOUR_node->nextPtr);
/////////////////////////////////////////////////////
//删除节点
//我希望能删除第一个节点
startptr=TWO_node;//先把起始位置改成第二个节点
free(ONE_node);//释放第一个节点
printf("\n%d",ONE_node->data);
//这里输出的值是-112不知道是否正确
////////////////////////////////////////////////////
//希望能删除第四个节点
//把第二个节点指向第三个节点
TWO_node->nextPtr=THREE_node;
free(FOUR_node);//释放第四个节点
printf("\n%d",TWO_node->nextPtr);
printf("\n%d",THREE_node);
printf("\n%d",FOUR_node->nextPtr);
}
因为自己练习的所以不太知道这样做是否正确,想请前辈们帮小弟看一下
感觉这个章节有点困难似懂非懂的,而且这个做法好像有点蠢
再麻烦各位前辈了
万分感谢!!感激不尽!!!!