/* 双向循环链表,带头指针 */ struct list_node { int data; struct list_node *prev, *next; }; void list_reverse(struct list_node* head) { } 我糊涂了,双向的是不用反转的,逆序遍历就可 #define list_for_each_reverse(iter, head) \ for (iter = (head)->prev; iter != (head); iter = iter->prev) 我实现的链表http://blog.chinaunix.net/u1/49865/showart.php?id=1901119 [ 本帖最后由 daxi1987 于 20...
各位CU朋友,有谁有比较好的链表逆序的算法吗? 今天有个面试,问及这个问题的时候,我只是用最简单的方法实现了,但是被人家BS了,他说有一本操作系统的书上有关于这个链表逆序的算法,说我不爱看书。当时老没面子了。不知道有没有人看过这本书,或者知道这个算法。谢谢。 PS:我的算法是这样子的:从头结点开始,一个结点一个结点的从原链表上摘下来,做为新生成链表的尾结点,直到所有节点被这样子弄一遍(自己也感觉这个方法...
请看一下是哪的问题 struct time_save { char str_time[20]; int str_fresh; struct time_save *next; }; 我想定写一个函数 struct time_save addstu(struct time_save *thread,char *time,int fresh_site) 其中thread为给定一个结构体,char *time,int fresh_site,为一个结构的两项要插入到thread,并返回thread结构体 请各位帮一下
前段时间,参加一个公司的笔试,其中一道题目是将字符串以单词为单位逆序,例如:"i am a student" 要变成"student a am i".当时没答出来:em16: .后来下来细想了一下,写出来了,和大家分享一下,大家看看有没有什么别的好办法。
#include
假设有如下链表 | 0 |---->| 1 |---->| 2 |---->....---->| N |---->| N+1 |---->| N+2 |--->NULL 如果想删除节点N和后面的节点,并且将N的位置设成NULL,用一个函数来实现。 例如 [CODE] LIST* data_ptr = NULL; GetData(&data_ptr); from_index = 10, Delete(data_ptr, from_index); [/CODE]
#define list_entry(ptr, type, member) \ ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member))) 谁解释一下这个语句的含义?
编译通过,但执行 insert_x_y(node *head,int x,int y)函数后,程序就自动退出了,请高手帮忙调试下
还有我在循环内增加了个i变量,比如我想建立5个节点,但是i打印却出来10
/* 带头节点的单链表操作 */
#include
[code]/*在头结点为H的单链表中,把值为B的结点S插入到值为A的结点前*/ void insert(Lnode *h,elemtype x,elemtype y) /*elemtype为char型,X为A,Y为B*/ { Lnode *p,*q,*s; p=h->next; while((p!=NULL)&&(p->data!=x)) p=p->next; s=(Lnode *)malloc(sizeof(Lnode)); s->data=y; s->next=(p-1)->next; (p-1)->next=s; } [/code] 这个程序哪里有问题呢?求解!