#include
#include
using namespace std;
typedef int ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
void initList(LinkList &L)
{
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
}
void creatList(LinkList &L,int n)
{
LinkList s,p;
s=L;
while(n--)
{
p=(LinkList)malloc(sizeof(LNode));
cin>>p->data;
p->next=s->next;
s->next=p;
}
}
void printList(LinkList &L)
{
if(L->next!=NULL)
printList(L->next);
cout<data<<" ";
}
int main()
{
LinkList L;
initList(L);
int n;
cin>>n;
creatList(L,n);
printList(L);
}
int main()
{
LinkList L;
initList(L);
int n;
cin>>n;
creatList(L,n);
printList(L->next);
}
你这是把带头节点的链表的那个头节点也输出了,由于没有赋值,肯定是个随机数啊!
改main函数里为printList(L->next)就行了。
通信方式:
同步:
临界区:通过多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问;
互斥量Synchronized/Lock:采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问
信号量Semphare:为控制具有有限数量的用户资源而设计的,它允许多个线程在同一时刻去访问同一个资源,但一般需要限制同一时刻访问此资源的最大线程数目。
事件(信号),Wait/Notify:通过通知操作的方式来保持多线程同步,还可以方便的实现多线程优先级的比较操作;