博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
伤不起的指针
阅读量:5319 次
发布时间:2019-06-14

本文共 3733 字,大约阅读时间需要 12 分钟。

虽然知道怎么做,但是还是做一遍啦。结果调试了两个多小时,真崩溃。

/*  * =====================================================================================  *  *       Filename:  intlist.h  *  *    Description:   *  *        Version:  1.0  *        Created:  09/16/2011 02:56:13 AM  *       Revision:  none  *       Compiler:  gcc  *  *         Author:  YOUR NAME (),  *        Company:   *  * ===================================================================================== */ #include 
#include
struct list_node {
int data; struct list_node *next; }; struct list_node * make_node(int n) {
struct list_node *pNode = (struct list_node *)malloc(sizeof(struct list_node )); pNode->next = 0; pNode->data = n; return pNode ; } void put_node(struct list_node *pNode) {
free(pNode); } struct list {
struct list_node *head; }; void CreateNoHead(struct list *root,int arrary[],int n) {
struct list_node ** ppHead = &(root->head); struct list_node * pNode ; for(int i = 0; i< n ;++i) {
pNode = make_node(arrary[i]); /*if(!*ppHead) {
*ppHead = pNode; }else{
pNode->next = (*ppHead); *ppHead = pNode; } */ if(*ppHead) pNode->next = (*ppHead); *ppHead = pNode; printf("%d\t",pNode->data); } printf("\n"); fflush(stdin); } void CreateHead(struct list *root,int arrary[],int n) {
root->head = make_node(0); struct list_node * pHead = root->head; struct list_node * pNode ; for(int i = 0; i< n ;++i) {
pNode = make_node(arrary[i]); /* if(*head) {
pNode->next = (*head)->next; (*head)->next = pNode; } else//root->head = null pNode->next = *head; *head = pNode; */ //先进后出链表 pNode->next = pHead->next; pHead->next = pNode; printf("%d\t",pNode->data); } printf("\n"); fflush(stdin); } void Print(const struct list *root) {
struct list_node * pNode = root->head; while(pNode) {
printf("%d\t",pNode->data); pNode = pNode->next; } printf("\n"); fflush(stdin); } void Destroy(struct list *root) {
struct list_node * pNode = root->head; struct list_node * pNext; while(pNode) {
pNext = pNode->next; put_node(pNode); pNode = pNext; } } void ReverseHead(struct list *root) {
struct list_node * pHead = root->head->next; struct list_node * pNode ; struct list_node * pNext ; if(!pHead ||!(pNode = pHead->next)) return ; //伤不起啊,该处要赋值为空 pHead->next = 0; while(pNode) {
pNext = pNode->next; pNode->next = pHead; pHead = pNode; pNode = pNext; } //重新赋值 root->head->next = pHead; } void ReverseNoHead(struct list *root) {
struct list_node * pHead = root->head; struct list_node * pNode ; struct list_node * pNext ; //链表只有一个或零个节点 if(!pHead ||!(pNode = pHead->next)) return ; pHead->next = 0; while(pNode) {
pNext = pNode->next; //插入 pNode->next = pHead; pHead = pNode; pNode = pNext; } //head重新赋值,新的表头 root->head = pHead; } void TestNoHead(struct list *root) {
} void TestHead(struct list *root) {
} int main(int argc,char *argv[]) {
int arrary [] = {
1,2,3,4,5,6,7,8,9,10}; struct list task; task.head = 0; CreateHead(&task,arrary,sizeof(arrary)/sizeof(int)); //CreateNoHead(&task,arrary,sizeof(arrary)/sizeof(int)); Print(&task); printf("\n"); //Reverse(&task); //ReverseNoHead(&task); ReverseHead(&task); Print(&task); Destroy(&task); return 0; }

  

转载于:https://www.cnblogs.com/westfly/archive/2011/09/17/2179826.html

你可能感兴趣的文章
Javascript模块化编程(三):require.js的用法
查看>>
HTML: Dom event
查看>>
titanium好的学习网站推荐
查看>>
Flyweight模式_Java中23种设计模式
查看>>
vue 中生成二维码之爬坑之路
查看>>
@Component 和 @Bean 的区别
查看>>
Linux安全篇-iptables
查看>>
div中溢出文字用点代替
查看>>
UVA - 489 Hangman Judge
查看>>
返回一个一维数组环中的数相加的最大的和
查看>>
55分钟学会正则表达式
查看>>
python1119-20181205作业-郭恩赐提交
查看>>
LA3490 Generator(KMP + 高斯消元)
查看>>
kaldi学习 - 一脚本流学习工具使用
查看>>
vSphere SDK for Java 示例
查看>>
AOj448有趣的矩阵
查看>>
字符串比较——compareTo函数
查看>>
Eclipse使用过程中出现java.lang.NoClassDefFoundError的解决方案
查看>>
Attribute "resultClass" must be declared for element type "insert".
查看>>
字符串的排列
查看>>