主题:链表的问题
wjj2100
[专家分:0] 发布于 2008-03-27 10:57:00
本人刚刚接触数据结构,由于C语言还没有学玩,所以对一些基础问题非常混沌,向高手求教。
1、对输入的一批数据用尾插法建立一带表头结点的单向线性链表, 输出该链表的数据,仅对单向线性链表进行处理,在不建立新链表的前提下,使原链表中的数据结点逆序,输出处理后的链表数据。
2、实现仅带尾结点指针单向循环链表的建立、插入、删除、查找操作算法。
3、对两个带表头结点的单向线性链表按结点数据域分别进行递增排序,然后归并成一个链表。
回复列表 (共3个回复)
沙发
wjj2100 [专家分:0] 发布于 2008-03-28 13:17:00
#include <iostream.h>
typedef int ElemType;
struct LinkList
{
ElemType data;
LinkList *next;
};
#define EndMark -9999
LinkList *CreateLinkList()
{
ElemType value;
LinkList *head, *newnode,*last;
last=head=new LinkList;
cout<<"please"<<endl;
cin>>value;
while(value!=EndMark)
{
newnode=new LinkList[1];
newnode->data=value;
last->next=newnode;
last=newnode;
cout<<"please"<<endl;
cin>>value;
}
last->next=NULL;
return head;
}
void printLinkList(LinkList *head)
{
LinkList *p=head;
while(p!=NULL)
{
cout<<p->data<<endl;
p=p->next;
}
}
void main()
{
LinkList *h;
h=CreateLinkList();
printLinkList(h);
}
这是我写的建立和打印的程序 就是倒序不怎么会 求教
板凳
guoq113 [专家分:0] 发布于 2008-03-28 18:27:00
将最后一个节点提出来,用头插法插入链表中,直到最后的节点是原先的第一个节点
3 楼
zyren [专家分:0] 发布于 2008-03-28 22:51:00
LinkList ReverseList( LinkList head )
{
// 将head 所指的单链表逆置
ListNode *p ,*q ;//设置两个临时指针变量
if( head->next && head->next->next)
{
//当链表不是空表或单结点时
p=head->next;
q=p->next;
p -> next=NULL; //将开始结点变成终端结点
while (q)
{ //每次循环将后一个结点变成开始结点
p=q;
q=q->next ;
p->next = head-> next ;
head->next = p;
}
return head;
}
return head; //如是空表或单结点表,直接返回head
}
我来回复