摘要: 题目:写一个算法将单链表中值重复的结点删除,使所得的结果表中各结点值均不相同。 刚看到这个题目给我第一个思路是冒泡排序,可以利用冒泡排序的两层循环找出相同的结点,然后free掉。第一层循环是控制循环的次数,第二层循环是控制第n个值和后面值的比较的次数。循环方面还比较好做,在删除结点的时候碰到了一些问题。因为删除结点的时候就相当于把指针指向的空间释放了,这个时候指针链就会断开,不再是一个连续的链表。为了连接链表,还需要额外定义一个变量,来记录释放结点的前一个节点,然后才可以把释放结点的前一个结点连接到释放结点的后一个结点(有点绕口,看代码就知道了)。 线性表的定义,和创建线性表,读取线性表的.. 阅读全文
posted @ 2012-09-25 21:28 net小伙 阅读(1747) 评论(0) 推荐(1) 编辑
摘要: 双向链表是为了满足更加方便的查找前驱,而付出空间的代价的一个数据结构。双向链表的节点定义如下:1 typedef struct node2 {3 int x;4 struct node *prior,*next;5 }DLNode;双向链表的空间结构如下图所示:双向链表的创建如下: 1 //创建双向链表 2 DLNode *create_DList() 3 { 4 DLNode *p,*h,*l; 5 int n,i,x; 6 h = (DLNode *)malloc(sizeof(DLNode)); 7 h->prior = h; /... 阅读全文
posted @ 2012-09-25 16:40 net小伙 阅读(18183) 评论(1) 推荐(2) 编辑